【发布时间】:2017-07-11 22:41:15
【问题描述】:
这源于how to sort array inside collection record in mongoDB 提供的示例
> alit=[{a:16},{a:15},{a:14},{a:13},{a:12},{a:11},{a:10},{a:9},{a:8},{a:7},{a:6},{a:5},{a:4},{a:3},{a:2},{a:1},{a:0}]
> alit.sort(function(a,b) {return a.a>b.a } )
[ { "a":8 }, { "a":0 }, { "a":7 }, { "a":14 }, { "a":12 }, { "a":11 }, { "a":10 }, { "a":9 }, { "a":1 }, { "a":13 }, { "a":6 }, { "a":5 }, { "a":4 }, { "a":3 }, { "a":2 }, { "a":15 }, { "a":16 } ]
>
请注意,如果我多次执行同一行,它会逐渐排序越来越多,就好像这是在执行快速排序,但每次只有两个级别的递归。 谁能解释我做错了什么以及如何定义一次扫描的自定义顺序?
【问题讨论】:
-
你在说什么? shell 只是一个普通的 JavaScript REPL,你只是用一个普通的 JavaScript
Array.sort()方法对一个普通的 JavaScript 数组进行排序。就像它应该的那样工作,当然不是你声称的那样。 -
我能够验证上述断言。我将您的陈述复制到我的 Mongo shell 中并稍微混淆了数字。我得到的排序结果是预期的排序数组,而不是你描述的。对于它的价值,我使用了 v3.4.2。
-
我正在使用 v3.0.10 并从客户端复制粘贴我的行。尼尔,我没有要求任何东西。
标签: javascript arrays mongodb sorting