Эффективно преобразовать значение поля в целое число из 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" не является уникальным в коллекции, и вы не хотите дублировать результат.

Другие вопросы по тегам