簡體   English   中英

mongoengine 是否支持在聚合方法中查找?

[英]Does mongoengine support lookup in aggregate method?

我目前使用的是 mongodb 版本 v3.0

這是我的代碼:

{'$lookup': {
      'from': 'Matrix',
      'localField': 'account_id',
      'foreignField': 'account_id',
      'as': 'Matrix'
      }
}

我有這個錯誤:

異常調用應用程序:異常:無法識別的管道階段名稱:'$lookup'

使用帶有 PyMongo 的聚合框架進行查詢。這需要到 MongoDB 的兩個連接(一個用於 PyMongo 執行聚合查詢,另一個用於常規查詢或通過 MongoEngine 插入或更新)。

但是 _get_collection() 解決了這個問題。

在下面的例子中,我們使用了兩個模型計划和插件,並且在這兩個關系中都是quote_id

collection = Plans._get_collection()

    pipeline = [
        {
            "$lookup":               
            {
                "from":"addons",
                "localField":"plans.quote_id",
                "foreignField":"addons.quote_id",
                "as": "addons_docs"
            }
        },
        {
            "$match":{
                "addons_docs":{
                    "$ne":[]
                }
            }
        },
        {
            "$addFields":
            {
                "addons_docs":
                {
                    "$arrayElemAt":["$addons_docs",0]
                }
            }
        },
        {
            "$replaceRoot":
            {
                "newRoot":
                {
                    "$mergeObjects":["$addons_docs","$$ROOT"]
                  
                }
            }
        },
        
        {
            "$project":
            {
                "addons_docs":0
            }
        },
        {
            "$sort":
            {
                "_id":-1
            }
        },
        {
            "$limit":100
        }
    ]
    cursor = collection.aggregate(pipeline)
    try:
        for doc in cursor:
            print(doc)
    finally:
        cursor.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM