Преобразование запроса MongoDB в формат PyMongo - PullRequest
0 голосов
/ 23 мая 2018

Народ,

У меня есть запрос MongoDB, который я хотел бы выполнить в своем коде Python:

db.authentication.aggregate(
    {$group:{_id:{'cpf':"$person.cpf", 'data':"$created_at"}, 'chamadas':{$push:"$device_data.metaChamadas.duration"}}},
    {$project:{
        'cpf':"$_id.cpf",
        'tamanho':{$size:{$arrayElemAt:["$chamadas",0]}}
    }}
)

Я использую Mongoengine, поскольку он поддерживает необработанные запросы PyMongo, но япока не могу понять, как конвертировать:

documents = list(Authentication.objects(__raw__={

PYMONGO QUERY HERE

}).limit(10))

Есть мысли?

1 Ответ

0 голосов
/ 23 мая 2018

Все mongoengine.queryset.QuerySet имеют метод агрегирования, который можно вызывать с командами агрегирования в качестве аргументов.

Для перевода запроса MongoDb у вас должен быть такой запрос:

pipeline = (
        {
        '$group': {
            '_id': {
                'cpf': '$person.cpf',
                'data': '$created_at'
            }, 
            'chamadas': {
                '$push': '$device_data.metaChamadas.duration'
            }
        }
    },
    {
        '$project': {
            'cpf': '$_id.cpf',
            'tamanho':  {
                '$size': {
                    '$arrayElemAt': ['$chamadas', 0]
                }
            }
        }
    }    
)

data = Authentication.objects.aggregate(*pipeline)
print(list(data))
...