保持Mongo中$ in查询中使用的列表顺序

时间:2015-01-15 14:58:04

标签: python mongodb pymongo

我有一个如下的查询

    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的顺序?

1 个答案:

答案 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中不再有效。