0
我有兩個集合 users {id,name}和文件{id,userId,name}我想查找所有文件名爲「abc.xyz」 ,我試圖使用$ lookup編寫代碼,但獲取所有文件屬於用戶,而不是按名稱「abc.xyz」過濾它,我寫了以下查詢。Mongo如何加入第二個集合中的兩個集合並添加條件
db.user.aggregate([
{"$lookup":
{
"from": "files",
"localField": "id",
"foreignField": "userId",
"as": "fileList"
}
},
{"$project": { "filList":{
"$filter": {
"input":"$fileList",
"as":"file"
"cond": {"$eq": ["$file.name","abc.xyz"]}
}
}
}
}
])
謝謝
你缺少一個'$'。所以應該是'$ eq「:[」$$ file.name「,」abc.xyz「]'$$ file'而不是'$ file'。同樣,這確實起作用,但實際上並不是」應該「在做,這裏的問題是'$ lookup'正在返回所有與外鍵匹配的文檔,而不是匹配你的給定條件,在小的結果集中這是可以的,但是在現實世界中你應該 –
請讓我知道如何以不同的方式做到這一點?我是mongoDB的新手,我們將不勝感激 – Ganesh
閱讀[從$ lookup獲取數組中元素的數量以及整個文檔](https:// stackoverflow.com/questions/44888354/get-filtered-count-of-elements-in-array-from-lookup-along-with-the-whole-docume/44897438#44897438)。剛回答,它解釋了正確的方法過濾數組作爲'$ lookup'的結果。 –