0

我在这里阅读树结构的文档:

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

层次结构是:

书籍 -> 编程 -> [语言、数据库 -> [Postgres、MongoDB]]

在文档中它说:

检索节点父节点的查询既快速又简单:

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

那讲得通。但是,如何根据祖先的属性运行查询?例如,不只是检索父母,假设我希望找到祖父的 _id 为“书籍”的所有文档,我该怎么做?答案应该是“语言”和“数据库”。

4

1 回答 1

0

如果你的树结构是固定的。您可以通过以下方式查询,在此之前,只需通过以下 URL 更改您的 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" : "Programming", "parent" : "Books", "left" : 2, "right" : 11 }

获取数据库的所有后代,

var databaseCategory = db.categories.findOne( { _id: "Databases" } );
db.categories.find( { left: { $gt: databaseCategory.left }, right: { $lt: databaseCategory.right } } );

结果:

{ "_id" : "MongoDB", "parent" : "Databases", "left" : 6, "right" : 7 }
{ "_id" : "dbm", "parent" : "Databases", "left" : 8, "right" : 9 }
于 2014-02-02T02:33:01.423 回答