有一个List ArrayList<Long> al=new ArrayList<Long>();里面存储了从外部获取的数据的ID并且进行了排序(随机抽取的ID,按照先后放入LIST),然后把这些ID在mongoDB通过inObj.put("_id", new BasicDBObject("$in", list));进行in查询,获取后的结果并不和LIST中ID的顺序一样,搜索了一下,有文章说不指定排序的话,mongodb会按照$natural进行排序,但是我测试了一下,并不是这样。
现在问题是怎么才能让mongodb按照list的排序获取结果呢
这是个很好的问题。其实你查的文章没有说错,不指定排序,就是按自然排序排的。只不过这个自然排序是指按照
_id
的自然排序去排。你的list
只是一个查询条件,就相当于x > max AND x < min
指定的一个查询范围,跟排序完全没有关系,不论是什么数据库系统,都会在你指定的这个list
范围内找到数据后再按自身的排序方法来排序。我的建议是你还是按这种方法去取值,取出来后,自己在java程序里循环一遍,然后跑出排序后的数组。