[英]Find value in the same collection (nested finds)
我有收集動物,像這樣
const animal1 = {
id: '001',
name: "cat",
num: '001',
strength: 2,
family: "felines",
animalsRelated:[
{
"num" : "002",
"name" : "Tiger"
},
{
"num" : "003",
"name" : "Lion"
}
]
}
const animal2 = {
id: "002",
num: "002",
name: "Tiger",
strength: 4,
family: "felines"
}
const animal3 = {
id: "003",
num: "003",
name: "Lion",
strength: 2,
family: "felines"
}
如果與任何動物相關的力量超過 3,我只需要嘗試查找貓。在這種情況下,查詢將給我們貓,但如果動物 2 的力量為 2,它不會給我們貓,它會給我們什么都沒有。 任何的想法? 我試過匹配和查找但沒有成功。 感謝您的時間。
解決方案可能如下
db.animals.aggregate([
{ $lookup: {
from: "animals",
localField: "animalsRelated.num",
foreignField: "num",
as: "animalsRelated"
}
},
{ $match: { "animalsRelated.strength": { $gt: 3 } } }
])
這個想法是使用$lookup來執行連接,從而將子文檔“擴展”成它們的完整形狀,然后使用 $match 來強制執行約束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.