我正在尝试从MongoDB实现(半)随机结果;我知道,Q / A很充足,在这里也是如此。但是......当我试图查询MongoDB时,只是为了看到我会得到的乐趣,$ lte给了我一些非常奇怪的结果。考虑一下这个数据集:
1. 0.011224885703995824
2. 0.01718393270857632
3. 0.03377954219467938
4. 0.09617210761643946
5. 0.10130057414062321
6. 0.13116577989421785
7. 0.25664394721388817
8. 0.27124307211488485
9. 0.3029055509250611
10. 0.31508319173008204
11. 0.3163822046481073
12. 0.34581731259822845
13. 0.5077376591507345
14. 0.5806738587561995
15. 0.5997774603310972
16. 0.6492975174915045
17. 0.710568506969139
18. 0.7257499841507524
19. 0.7275129975751042
20. 0.771076871547848
存储在一个名为random的字段中,并用rand函数填充。这个领域有一个索引,但有20条记录,我认为无关紧要。但。如果我查询:.findOne( {'random': { $lte : 0.59 }} )
我得到结果:“随机”:0.34581731259822845(数字12),而期待数字14 ......?
当我尝试更多查询时,结果非常奇怪。有时这是我的期望,但大多数时候它似乎......好吧,我不知道。我不明白上面的查询如何导致它给出的结果......
答案 0 :(得分:0)
啊!我想我现在就明白了 - 这就是Wat Yogesh的意思:findOne以符合标准的自然顺序获取第一个文档!对。我没弄明白。这意味着如果随机数很高,它通常会返回相同的数字。所以Yogeshes的答案是正确的 - 虽然他可能已经详细阐述了:-)