mongodb结果集默认排序

作者:杨润炜
日期:2016/1/30 12:00

问题描述

使用mongodb时,我们常会传一个_id数组,然后查询表里_id字段等于该数组某个元素的记录,返回出结果集。如:

  1. db.inventory.find( { _id: { $in: [ 15, 5 ] } } )

这个语句表示查询inventory文档里_id为15或5的记录。
这本来没有什么好说的。但问题出在了最后的结果集上。我们期望的结果集是:

  1. {_id: 15, data: ...}
  2. {_id: 5, data: ...}

然而现实却不尽人意,真正的结果是:

  1. {_id: 5, data: ...}
  2. {_id: 15, data: ...}

问题分析与解决

在上述查询代码中,我们并没有指定sort条件,但mongodb返回的结果集却像是按_id排序过的。经过反复试验,在我们没指定sort条件时,mongodb确实会按照自然排序(_id的大小)对结果集进行排序。如果要达到自己预期的结果,我的做法是在返回结果集上,自己用程序再进行一次排序。跟踪segmentfault的这个问答,可能之后会有更好的解决方案。

感谢您的阅读!
如果看完后有任何疑问,欢迎拍砖。
欢迎转载,转载请注明出处:http://www.yangrunwei.com/a/24.html
邮箱:glowrypauky@gmail.com
QQ: 892413924