MongoDB聚合每次返回随机结果(PyMongo)



我遇到了pymongo.aggregate的一个奇怪行为。

我正在使用pymongo collection.aggregate()来获取结果。即使是简单的请求,该命令每次都会返回新的结果。

In [8]: print([i['_id'] for i in col.aggregate([
...:     {'$match': {'$text': {'$search': 'mark'}}},
...:     {'$limit':2}])])
['CA 990342008', 'TX 16854869']
In [9]: print([i['_id'] for i in col.aggregate([
...:     {'$match': {'$text': {'$search': 'mark'}}},
...:     {'$limit':2}])])
['TX 8210259', 'CA 993322075']

如果有人指出我在文档中遗漏了什么,我会很高兴。

与大多数数据库一样,除非请求特定的顺序,否则返回文档的顺序是任意的。这样做是为了优化目的;只要内部引擎有两个匹配的文档(在您的示例中(,就不需要做任何其他事情,所以这就是为什么您可能会看到不同的结果。

在MongoDB中,您可以使用.sort()操作符请求特定订单,或者在您的示例中,使用$sort聚合管道阶段。

最新更新