我正在尝试实现一个来自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-function填充。这个字段有一个索引,但是有20条记录,我认为这无关紧要。但。如果我用:.findOne( {'random': { $lte : 0.59 }} )查询,我得到的结果是:"random“:0.34581731259822845 (数字12),而期望的是数字14...?当我尝试更多的查询时,结果非常奇怪。有时这是我所期望的,但大多数时候似乎...嗯,我不知道。我不明白上面的查询是如何得出它给出的结果的。
发布于 2015-06-02 14:21:21
阿!我想我现在明白了--这就是Yogesh的意思: findOne按照满足标准的自然顺序获取第一个文档!正确的。我不明白。这意味着如果随机数很高,它通常会返回相同的数字。所以Yogeshes的答案是正确的-尽管他可能已经阐述了一点:-)
https://stackoverflow.com/questions/30497503
复制相似问题