我目前正在使用mongodb版本v3.0
这是我的代码:
{'$lookup': {
'from': 'Matrix',
'localField': 'account_id',
'foreignField': 'account_id',
'as': 'Matrix'
}
}
我有这个错误:
异常调用应用程序:异常:无法识别的管道阶段名称:' $ lookup'
答案 0 :(得分:0)
使用带有PyMongo的聚合框架进行查询。这需要两个到MongoDB的连接(一个用于PyMongo执行聚合查询,另一个用于常规查询或通过MongoEngine插入或更新)。
但是_get_collection()解决了这个问题。
在下面的示例中,我们使用两个模型Plans和Addons,并且两者的关系都是 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()