我使用聚合框架在mongo中查询数据库,如下所示:
db.items.aggregate({$group: {_id: "$seller_id", totalSold : { $sum: "$sold_quantity"} }},
{ $match: {totalSold: {$gte: 100}}}, {$sort:{totalSold: -1}}, {$limit:10})
上面的命令在mongo shell中运行正常,但是在python中使用pymongo的库运行时没有返回结果,如下所示:
pipeline = [{"$group": {"_id": "$seller_id", "totalSold" : { "$sum": "$sold_quantity"} }},
{ "$match": {"totalSold": {"$gte": 500}}}, {"$sort": SON([("totalSold", -1)])}, {"$limit":10}]
items_it = self.items.aggregate(pipeline)
我一直在阅读pymongo的文档和本网站的一些帖子,但是我找不到修改语法的方法来获得结果。
答案 0 :(得分:0)
在第二个示例中,变量pipeline
是一个列表。试试吧:
items_it = self.items.aggregate(pipeline[0])
答案 1 :(得分:0)
试试这个:
pipeline = [{"$group": {"_id": "$seller_id", "totalSold" : { "$sum": "$sold_quantity"} }},
{ "$match": {"totalSold": {"$gte": 500}}}, {"$sort": {"totalSold": -1}}, {"$limit":10}]
items_it = self.items.aggregate(pipeline)
答案 2 :(得分:0)
我在pymongo 2.5.2连接到mongo 3.0.2数据库时遇到了同样的问题。我相信这是一个错误。更新到最新版本的pymongo(3.0.2 + git)解决了这个问题。