繁華開(kāi)滿(mǎn)天機(jī)
2021-07-23 18:11:11
我的 pymongo 腳本中有以下管道:pipeline = [ {'$match': {'_id': '123456'}}, {'$lookup': { 'from': 'Case', 'localField': '_id', 'foreignField': 'RecordList.Record._id', 'as': 'CaseInfo'} }, {'$unwind':'$CaseInfo'}, {'$unwind':'$CaseInfo.RecordList'}, {'$unwind':'$CaseInfo.RecordList.Record'}, {'$match': {'CaseInfo.RecordList.Record._id': '123456'}}]我需要更改最后一行代碼,這樣我就不需要手動(dòng)指定文檔 ID,而是從初始文檔中獲取它。我嘗試了以下但沒(méi)有運(yùn)氣:{'$match': {'CaseInfo.RecordList.Record._id': '_id'}}{'$match': {'CaseInfo.RecordList.Record._id': '$_id'}}請(qǐng)你幫助我好嗎?另外,這是完成此任務(wù)的最有效方法,還是應(yīng)該使用 $project?我嘗試使用它,但我不知道文檔的結(jié)構(gòu),我需要文檔中的每個(gè)字段。我不確定是否有辦法在 $filter 運(yùn)算符中不指定“1”(因?yàn)槲也恢梨I名)提前致謝
1 回答

縹緲止盈
TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
在 3.6 版本中,您可以將最后一行更改為
{'$match': {$expr:{$eq:['$CaseInfo.RecordList.Record._id', '$_id']}}}.
或者,您可以重寫(xiě)聚合以$lookup與管道變體一起使用。
就像是
[
{"$match":{"_id":"123456"}},
{"$lookup":{
"from":"Case",
"let":{"_id":"$_id"},
"pipeline":[
{"$unwind":"$RecordList"},
{"$unwind":"$RecordList.Record"},
{"$match":{"$expr":{"$eq":["$RecordList.Record._id","$$_id"]}}}
],
"as":"CaseInfo"
}},
{"$unwind":"$CaseInfo"}
]
添加回答
舉報(bào)
0/150
提交
取消