Mongodb:如何以与数组元素相同的顺序命令"select in"

lar*_*ron 6 mongodb node.js

我正在执行这个mongo查询:

db.mytable.find({id:{$in:["1","2", "3", "4" ]}});
Run Code Online (Sandbox Code Playgroud)

它以奇怪的顺序返回所有结果,如下所示:

4,3,2,1
Run Code Online (Sandbox Code Playgroud)

我需要以与查询数组中定义的顺序相同的顺序检索所有结果.

1,2,3,4
Run Code Online (Sandbox Code Playgroud)

可能吗 ?

Bra*_*ack 1

有几点需要注意:

1.) 与大多数数据库一样,MongoDB 不保证查询返回结果的顺序,除非您使用sort(). 如果您确实想保证查询结果以特定顺序返回,则需要指定该特定排序顺序。

2.) 一般来说,最近更新/移动的文档将显示在结果集的末尾,但仍然不能保证。MongoDB 使用“自然顺序”作为对象的本机排序,尽管这非常接近插入顺序,但不能保证相同。

3.) 索引字段的行为会有所不同。值得指出的是,您的查询似乎正在使用id而不是_id. 前者_id默认会被索引,id除非您明确向该字段添加索引,否则不会被索引。

您可以在这里阅读有关 MongoDB 排序和顺序的更多信息: http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order