MongoDB-MongoDB 按照数组排序?
如下查询:
> db.users.find({_id: {$in: [5, 3, 2, 1, 4]}}, {_id: 1})
{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 3 }
{ "_id" : 4 }
{ "_id" : 5 }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
转摘
MongoDB里的自然排序(也就是按$natural字段排序)与按_id字段排序是不同的。自然排序是按数据在数据文件中的组织顺序来排序的。
你可以explain一下你的查询,就能看到它利用索引的情况,比如你用下面的语句插入数据:
在你不对a字段加索引时,会得到下面的结果,下面就是自然排序的结果:
因为这时候MongoDB是排表的查询,扫到一条数据满足条件就加入到返回列表中。所以是按自然顺序来做的。
而如果你加上索引再查,会得到下面的结果
可以看到,结果按a为1,a为2分开了,因为按索引查询时,相当于是在索引中查多段数据,这里的例子里,相当于是查了a的范围为[1,1]和[2,2]两个范围的数据,这两次在逻辑上是串行的,先查[1,1]的数据,再查[2,2]的数据,所以这里a为1和2的分开了。
所以最终的办法是查出来后,你自己得重新排序一下。