PyMongo-聚合不适用于组

时间:2019-06-13 19:33:55

标签: python mongodb aggregation-framework

我正在尝试在Python项目中进行以下汇总:

pipeline = [
            {
                '$group': {
                    'date': { '$max': "$date" },
                    '_id': {
                        'interface': "$interface",
                        'message': "$message",
                        'server': "$server"
                    },
                    'record_count': {
                        '$sum': '1'
                    } 
                }
            }
        ]
errors = EntryError.objects.aggregate(pipeline)

但是执行aggregate函数时,它给了我以下错误:

pymongo.errors.OperationFailure: Each element of the 'pipeline' array must be an object

但是在Robo3T和使用mongo shell时,相同的管道代码也可以工作。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我弄清楚我做错了。

解决所有问题的代码就是这个:

pipeline = {
    "$group": {
        "date": {"$max": "$date"},
        "_id": {
            "interface": "$interface",
            "message": "$message",
            "server": "$server"
        },
        "record_count": {
            "$sum": 1
        }
    }
}

errors = EntryError.objects.filter(
    date__gte=start_date, 
    date__lte=end_date
).aggregate(pipeline)

将“管道”作为字典而不是列表。