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数组的第一个元素的结果很可能会作为结果