使用python从mongo find()有效地将字段值转换为整数

时间:2017-03-31 04:45:30

标签: mongodb python-2.7 pymongo pymongo-2.x

鉴于下面的mongo文档,如何有效地查找所有文档并将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 个答案:

答案 0 :(得分:1)

如果没有客户端处理或map reduce,则无法执行此操作。

mylist = map(int, db.collection.distinct('student_id'))

在PY2中产生student_id类型的int或在PY3中产生迭代器对象的列表

如果“student_id”在集合中不是唯一的,并且您不想删除结果,也可以使用.aggregate()方法显示here