Python mongoengine是否支持聚合方法中的查找?
Im目前正在使用mongodb v3.0版 这是我的代码: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的连
{'$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()