【问题标题】:Converting MongoDB query do PyMongo format将 MongoDB 查询转换为 PyMongo 格式
【发布时间】:2018-11-02 13:56:08
【问题描述】:

伙计们,

我有一个 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))

有什么想法吗?

【问题讨论】:

    标签: python mongodb pymongo mongoengine


    【解决方案1】:

    所有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))
    

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2010-12-17
      • 1970-01-01
      • 2018-08-28
      • 2020-01-19
      相关资源
      最近更新 更多