我有一个如下的查询
query = PhotoLocation.query.filter(photo_location_filters)
photo_locations = yield query.find()
id_list = [i.photo_id for i in photo_locations]
photo_filters = {}
photo_filters.update({'_id': {'$in': id_list}})
photo_filters.update({
"has_images": True,
"is_hidden": {
"$ne": True
}
})
query = Photo.query.filter(photo_filters).limit(limit)
在查询中$后,我丢失了id_list的顺序。有没有办法在下面的查询中保持id_list的顺序?
答案 0 :(得分:0)
未使用$in
- 有一项功能请求,SERVER-7528。
如果您使用的是MongoDB 2.4或更早版本,切换到$or
将起作用:
db.filters.find({ "_id" : { "$in" : [1, 2, 3] } })
到
db.filters.find({ "$or" : [
{ "_id" : 1 },
{ "_id" : 2 },
{ "_id" : 3 }
] })
这在MongoDB 2.6中不再有效。