所以我有一個結構像這樣的檔案和模型
{
"name":"root",
"children":[
{
"_id":1,
"name":"A",
"children":[
{
"_id":2,
"name":"A child1",
"children":[
]
}
]
},
{
"_id":3,
"name":"B",
"children":[
{
"_id":4,
"name":"B child1",
"children":[
{
"_id":5,
"name":"B1 child1",
"children":[
{
"_id":6,
"name":"B1-1 child1",
"children":[
]
}
]
}
]
}
]
}
]
}
如果我想找到根的 A 或 B 的孩子,我可以去
db.treeModel.find({'treeModel.children': 1}
db.treeModel.find({'treeModel.children': 3}
但是,它似乎不適用于各個節點的子節點的 ID。mongo 或 mongoose 是否支持這一點,還是我缺少操作員?
uj5u.com熱心網友回復:
你需要 _id 在路徑中(并省略“treeModel”),如:
db.treeModel.find({'children._id': 1})
db.treeModel.find({'children._id': 3})
請記住,這仍將回傳整個父檔案
mongo/mongoose 不支持直接在 find 中進行遞回嵌套檔案查找。如果你有最大深度,你可以使用多個 $or 條件
db.treeModel.find({
$or: [
{ 'children._id': 1 },
{ 'children.children._id': 1 },
{ 'children.children.children._id': 1 },
]
});
否則對于遞回嵌套,您可能需要重做資料結構,以便可以在聚合中使用 $graphLookup
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/470269.html
上一篇:貓鼬findOne和$push