如何查询MongoDB中的祖先关系?

时间:2013-07-04 21:18:02

标签: mongodb

我正在阅读树结构的文档:

http://docs.mongodb.org/manual/tutorial/model-tree-structures/

层次结构是:

图书 - >编程 - > [语言,数据库 - > [Postgres,MongoDB]]

在文档中说:

检索节点父节点的查询快速而直接:

db.categories.findOne( { _id: "MongoDB" } ).parent

这是有道理的。但是,如何根据祖先的属性运行查询?例如,假设我希望找到祖父拥有“书籍”_id的所有文件,而不是仅仅检索父级,我该怎么做?答案应该是“语言”和“数据库”。

1 个答案:

答案 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}