Эффективно преобразовать значение поля в целое число из mongo find(), используя python
Для данного монго-документа, как показано ниже, как эффективно найти все документы и вернуть поле student_id как целое число?
{
"_id" : ObjectId("58dd757910d81946b8ff853a"),
"student_id": "4169506398",
"first_name": "steven",
"last_name": "smith",
"date_of_birth": "02-07-1988"
}
{
"_id" : ObjectId("58dd757910d81946b8ff853b"),
"student_id": "6902",
"first_name": "michael",
"last_name": "clarke",
"date_of_birth": "05-30-1988"
}
Ожидаемый результат (в Json):
{
"student_id": 4169506398
}
{
"student_id": 6902
}
У меня 29000 записей. Получение документов с использованием db.find({}) и приведение к типу student_id целого числа при зацикливании может привести к проблемам с производительностью.
1 ответ
Вы не можете сделать это без обработки на стороне клиента или уменьшения карты.
mylist = map(int, db.collection.distinct('student_id'))
который дает список student_id
типа int
в PY2 или объект итератора в PY3
Вы также можете использовать .aggregate()
метод, как показано здесь, если "student_id" не является уникальным в коллекции, и вы не хотите дублировать результат.