簡體   English   中英

在同一個集合中查找值(嵌套查找)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM