Mongodb:如何以与数组元素相同的顺序排列“select in”
我正在执行这个mongo查询:
db.mytable.find({id:{$in:["1","2", "3", "4" ]}});
它以奇怪的顺序返回所有结果,如下所示:
4,3,2,1
我需要按照在查询数组中定义的顺序检索所有结果。
1,2,3,4
可能吗 ?
有几件事要注意:
1.)与大多数数据库一样,MongoDB不保证从查询返回的结果顺序,除非使用对sort()
的调用。 如果您确实希望确保您的查询结果以特定顺序返回,则需要指定特定的sorting顺序。
2.)一般而言,最近更新/移动的文档将显示在结果集的末尾,但仍然没有保证。 MongoDB使用“自然顺序”来实现对象的本地sorting,尽pipe这与插入的顺序非常接近,但不一定是相同的。
3.)索引字段的行为会有所不同。 值得指出的是,它看起来像你的查询是使用id
而不是_id
。 前者, _id
将被默认索引,并且id
不会被编入索引,除非你明确地向该字段添加了一个索引。
你可以在这里阅读更多关于MongoDB的sorting和sorting: http : //www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
你可以写这样的查询:
db.mytable.find({id:{$in:["1","2", "3", "4" ]}}).sort({id:1})
要得到你的结果ORDER BY id ASC
来源: MongoDB高级查询
但是如果你只是想根据你的$ in数组来sorting结果,试着按照相反的顺序sorting你的$ in数组,那么$ in数组的第一个元素的结果很可能会作为结果