在Mongo中保持$in查询中使用的列表顺序[重复]
Posted
技术标签:
【中文标题】在Mongo中保持$in查询中使用的列表顺序[重复]【英文标题】:Keep the order of list used in $in query in Mongo [duplicate] 【发布时间】:2015-03-14 00:17:53 【问题描述】:我有如下查询
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 的顺序?
【问题讨论】:
【参考方案1】:不使用$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 中不再适用。
【讨论】:
我实际上以为我在不久前的那个问题的 cmets 中发布了一个指向 couple of working solutions 的链接。这似乎比仅仅从不再有效的问题中复制一些东西要好。以上是关于在Mongo中保持$in查询中使用的列表顺序[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何保持 Spring Data JPA 或 Hibernate 中“in”子句中提供的顺序 [重复]
MongoDB 使用 Async.js 与 $in 保持顺序 [重复]