MongoDB 查找嵌套属性

MongoDB finding nested properties

所以我有一个结构如下的文档和模型

{
   "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":[
                              
                           ]
                        }
                     ]
                  }
               ]
            }
         ]
      }
   ]
}

如果我想找到 children 的 A 或 B 的根我可以去

db.treeModel.find({'treeModel.children': 1}
db.treeModel.find({'treeModel.children': 3}

然而,它似乎不适用于单个节点的 children 的 ID。 mongo 或 mongoose 支持这个还是我缺少运算符?

您需要在路径中使用 _id(并省略“treeModel”),例如:

db.treeModel.find({'children._id': 1})
db.treeModel.find({'children._id': 3})

请记住,这仍将 return 整个父文档

mongo/mongoose 不支持直接在查找中进行递归嵌套文档查找。如果你有最大深度,你可以使用多个 $or 条件

db.treeModel.find({
  $or: [
    { 'children._id': 1 },
    { 'children.children._id': 1 },
    { 'children.children.children._id': 1 },
  ]
});

否则对于递归嵌套,您可能需要重做数据结构以便可以使用 $graphLookup in an aggregation