Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mongoengine是否支持聚合方法中的查找?_Python_Mongodb_Mongoengine - Fatal编程技术网

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

Python mongoengine是否支持聚合方法中的查找?,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,Im目前正在使用mongodb v3.0版 这是我的代码: {'$lookup': { 'from': 'Matrix', 'localField': 'account_id', 'foreignField': 'account_id', 'as': 'Matrix' } } 我有一个错误: 调用应用程序时发生异常:异常:无法识别的管道阶段名称:“$lookup” 通过PyMongo使用聚合框架进行查询。这需要两个到MongoDB的连

Im目前正在使用mongodb v3.0版

这是我的代码:

{'$lookup': {
      'from': 'Matrix',
      'localField': 'account_id',
      'foreignField': 'account_id',
      'as': 'Matrix'
      }
}
我有一个错误:

调用应用程序时发生异常:异常:无法识别的管道阶段名称:“$lookup”


通过PyMongo使用聚合框架进行查询。这需要两个到MongoDB的连接(一个用于PyMongo执行聚合查询,另一个用于常规查询或通过MongoEngine插入或更新)

但是_get_collection()可以解决这个问题

在下面的示例中,我们使用两个模型计划和插件,在这两个关系中都是quote\u id

集合=计划。_get_collection()


通过PyMongo使用聚合框架进行查询。这需要两个到MongoDB的连接(一个用于PyMongo执行聚合查询,另一个用于常规查询或通过MongoEngine插入或更新)

但是_get_collection()可以解决这个问题

在下面的示例中,我们使用两个模型计划和插件,在这两个关系中都是quote\u id

集合=计划。_get_collection()


与Mongoengine无关。您得到该错误是因为您的MongoDB不支持它。使用
mongo
shell连接并使用
db.version()
查看服务器版本。您至少需要MongoDB 3.2才能使用。我想您可能对来自“shell”的启动消息感到困惑,它不同于
db.version()
输出。谢谢您,先生。3.2版支持查找,目前我在docker中使用3.0。与Mongoengine无关。您得到该错误是因为您的MongoDB不支持它。使用
mongo
shell连接并使用
db.version()
查看服务器版本。您至少需要MongoDB 3.2才能使用。我想您可能对来自“shell”的启动消息感到困惑,它不同于
db.version()
输出。谢谢您,先生。3.2版支持查找,目前我在docker中使用3.0。
    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()