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

Keep the order of list used in $in query in Mongo

我有如下查询

    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)

我在 $in 查询后丢失了 id_list 的顺序。有没有办法在下面的查询中保持 id_list 的顺序?

未使用 $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 中不再有效。