[英]MongoEngine (flask) does not sort (via aggregate) correctly - every now and then
[英]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.