使用pymongo的聚合语法没有结果

时间:2013-12-09 12:51:39

标签: python mongodb pymongo

我使用聚合框架在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的文档和本网站的一些帖子,但是我找不到修改语法的方法来获得结果。

3 个答案:

答案 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)解决了这个问题。