我遇到了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
聚合管道阶段。