mongoDB的排序问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mongoDB的排序问题

2016-06-29 10:14:22 2015 1

有一个List ArrayList al=new ArrayList();里面存储了从外部获取的数据的ID并且进行了排序(随机抽取的ID,按照先后放入LIST),然后把这些ID在mongoDB通过inObj.put("_id", new BasicDBObject("$in", list));进行in查询,获取后的结果并不和LIST中ID的顺序一样,搜索了一下,有文章说不指定排序的话,mongodb会按照$natural进行排序,但是我测试了一下,并不是这样。
现在问题是怎么才能让mongodb按照list的排序获取结果呢

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:48:49

    你可以explain一下你的查询,就能看到它利用索引的情况,比如你用下面的语句插入数据:

    > db.test.insert({a:2,b:1})
    > db.test.insert({a:1,b:2})
    > db.test.insert({a:2,b:3})
    > db.test.insert({a:1,b:4})
    在你不对a字段加索引时,会得到下面的结果,下面就是自然排序的结果:
    
    > db.test.find({a:{$in:[1,2]}})
    { "_id" : ObjectId("4f509380ea72116cb2137567"), "a" : 2, "b" : 1 }
    { "_id" : ObjectId("4f509380ea72116cb2137568"), "a" : 1, "b" : 2 }
    { "_id" : ObjectId("4f509380ea72116cb2137569"), "a" : 2, "b" : 3 }
    { "_id" : ObjectId("4f509380ea72116cb213756a"), "a" : 1, "b" : 4 }
    因为这时候MongoDB是排表的查询,扫到一条数据满足条件就加入到返回列表中。所以是按自然顺序来做的。
    
    而如果你加上索引再查,会得到下面的结果
    
    > db.test.ensureIndex({a:1})
    > db.test.find({a:{$in:[1,2]}})
    { "_id" : ObjectId("4f509537ea72116cb213756f"), "a" : 1, "b" : 4 }
    { "_id" : ObjectId("4f509530ea72116cb213756d"), "a" : 1, "b" : 2 }
    { "_id" : ObjectId("4f509534ea72116cb213756e"), "a" : 2, "b" : 3 }
    { "_id" : ObjectId("4f50952cea72116cb213756c"), "a" : 2, "b" : 1 }
    可以看到,结果按a为1,a为2分开了,因为按索引查询时,相当于是在索引中查多段数据,这里的例子里,相当于是查了a的范围为[1,1]和[2,2]两个范围的数据,这两次在逻辑上是串行的,先查[1,1]的数据,再查[2,2]的数据,所以这里a为1和2的分开了。
    0 0
相关问答

1

回答

在MongoDB中具体如何排序?

2021-12-14 22:44:12 805浏览量 回答数 1

3

回答

MongoDB 的有什么优点呢

2021-09-26 22:13:44 911浏览量 回答数 3

1

回答

MongoDB的MR问题!

2016-06-29 10:30:14 1656浏览量 回答数 1

1

回答

mongodb聚合问题

2016-06-15 15:59:45 1545浏览量 回答数 1

1

回答

mongodb怎么做拼音排序

2016-06-14 15:59:08 3902浏览量 回答数 1

1

回答

mongodb的find()是按什么排序的?

2016-02-26 16:27:29 2488浏览量 回答数 1

1

回答

mongodb 若干问题

2016-02-18 14:48:05 1808浏览量 回答数 1

1

回答

有关MongoDB的分页问题

2016-02-21 15:35:48 2281浏览量 回答数 1

1

回答

mongodb多网卡问题

2016-02-14 16:08:15 2026浏览量 回答数 1

1

回答

mongodb中外链查询的相关问题

2016-02-07 13:35:17 1591浏览量 回答数 1
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载