我有trees具有樹狀結構的物件的集合。我實際上使用的是子參考模式,但在我的情況下,每棵樹的深度是未定義的 - 它可能在[0:100]大約范圍內:
{
"_id": "tree1",
"tag_id": "1",
"children": [
{
"_id": "tree2",
"tag_id": "2",
"children": [
{
"_id": "tree3",
"tag_id": "3"
}
]
},
{
"_id": "tree4",
"tag_id": "4"
}
]
}
我也有一個簡單的tags集合,其中包含以下物件:
[
{
"_id": "1",
"name": "one"
},
{
"_id": "2",
"name": "two"
},
{
"_id": "3",
"name": "three"
},
{
"_id": "4",
"name": "four"
},
{
"_id": "5",
"name": "five"
}
]
如您所見,我有一個孤兒(5trees ),它在集合中沒有鏈接:
{
"_id": "5",
"name": "five"
}
我想找到所有這樣的孤兒并將它們從tags收藏中洗掉。我嘗試使用以下aggregate方法$lookup:
db.tags.aggregate(
[
{$lookup:
{
from: "trees",
localField: "_id",
foreignField: "tag_id",
as: "matched_docs"
}
}
]
);
但是這種方法加入并僅找到“頂部”連接而不查看子陣列。如何使用 mongo 查詢解決任務?也許,最好使用不同的資料結構、模式或其他聚合方法?
uj5u.com熱心網友回復:
根據最新版本的檔案
Nested Depth for BSON Documents MongoDB supports no more than 100 levels of nesting for BSON documents. Each object or array adds a level.
Mongodb 不適合這種模式。因此,您無法通過大量動態級別的深度嵌套陣列來實作這一點。
您可以更改架構或資料存盤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/477724.html
