我正在阅读树结构的文档:
http://docs.mongodb.org/manual/tutorial/model-tree-structures/
层次结构是:
图书 - >编程 - > [语言,数据库 - > [Postgres,MongoDB]]
在文档中说:
检索节点父节点的查询快速而直接:
db.categories.findOne( { _id: "MongoDB" } ).parent
这是有道理的。但是,如何根据祖先的属性运行查询?例如,假设我希望找到祖父拥有“书籍”_id的所有文件,而不是仅仅检索父级,我该怎么做?答案应该是“语言”和“数据库”。
答案 0 :(得分:0)
如果您的树结构是固定的。您可以通过以下方式进行查询,在此之前,只需按照网址
更改您的mongodb结构即可http://docs.mongodb.org/manual/tutorial/model-tree-structures-with-nested-sets/
获取数据库的所有祖先,
var databaseCategory = db.categories.findOne({_ id:“Databases”});
db.categories.find({left:{$ lt:databaseCategory.left},right:{$ gt:databaseCategory.right}});
{“_ id”:“Books”,“parent”:0,“left”:1,“right”:12} {“_ id”:“编程”,“父母”:“书籍”,“左”:2,“右”:11}
获取数据库的所有后代,
var databaseCategory = db.categories.findOne({_ id:“Databases”}); db.categories.find({left:{$ gt:databaseCategory.left},right:{$ lt:databaseCategory.right}});
{“_ id”:“MongoDB”,“parent”:“数据库”,“左”:6,“右”:7} {“_ id”:“dbm”,“parent”:“数据库”,“左”:8,“右”:9}