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

开发者社区> 问答> 正文

mongoDB的排序问题

2016-02-13 16:32:06 1807 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)
  • 蛮大人123
    2019-07-17 18:42:11

    MongoDB里的自然排序(也就是按$natural字段排序)与按_id字段排序是不同的。自然排序是按数据在数据文件中的组织顺序来排序的。
    你可以explain一下你的查询,就能看到它利用索引的情况,比如你用下面的语句插入数据:
    screenshot
    在你不对a字段加索引时,会得到下面的结果,下面就是自然排序的结果:
    screenshot
    因为这时候MongoDB是排表的查询,扫到一条数据满足条件就加入到返回列表中。所以是按自然顺序来做的。
    而如果你加上索引再查,会得到下面的结果
    screenshot
    可以看到,结果按a为1,a为2分开了,因为按索引查询时,相当于是在索引中查多段数据,这里的例子里,相当于是查了a的范围为[1,1]和[2,2]两个范围的数据,这两次在逻辑上是串行的,先查[1,1]的数据,再查[2,2]的数据,所以这里a为1和2的分开了。

    0 0
相关问答

10

回答

【精品问答合集】Hbase热门问答

hbase小能手 2019-05-29 14:37:26 120875浏览量 回答数 10

38

回答

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

xiaofanqie 2014-12-25 15:13:38 92122浏览量 回答数 38

20

回答

[@倚贤][¥20]学习Java后端的疑惑

小江同志 2018-10-24 16:11:21 132593浏览量 回答数 20

111

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295687浏览量 回答数 111

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259913浏览量 回答数 38

62

回答

磁盘原地扩容功能4月22日正式上线

艳馨 2015-04-21 23:40:33 96396浏览量 回答数 62

23

回答

【精品问答合集】Redis热门问答

李博 bluemind 2019-05-29 16:36:15 127162浏览量 回答数 23

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204429浏览量 回答数 2

11

回答

【精品问答合集】MongoDB热门问答

李博 bluemind 2019-05-29 16:50:19 121381浏览量 回答数 11

13

回答

【精品问答合集】Java热门问答

李博 bluemind 2019-05-29 16:00:45 125712浏览量 回答数 13
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载