如何通过过滤MongoDB中的父项字段来查询子项?

时间:2014-02-26 22:30:38

标签: mongodb

假设我的父集合(类别)有一个名为locale的字段。

此类别可能包含子类别和产品,产品可以位于每个子类别中。

我需要的是查询其父级语言环境为“en_US”的所有产品。

要列出的查询或脚本是什么?

2 个答案:

答案 0 :(得分:0)

我假设你的架构很多,但在shell中你可以做类似的事情:

var parentCategories = db.category.find({locale: 'en_US'});
var categories = [];
parentCategories.forEach(function(category){
    categories = categories.concat(db.category.find({parent_id: category._id}));
});

答案 1 :(得分:0)

这可能不是您需要的答案,因为您的数据结构可能不同。但请考虑以下文件:

 {
      "product_id": "ABCD",
      "name": "A better widget for everyone"
      "categories": [
         {
             "name": "toys",
             "locale": "en_US",
         },
         {
             "name": "games",
             "locale": "en_AU"
         }
      ]

 }

因此,如果您的数据 结构如下:

 db.products.find({ "category.locale": "en_US" })

只需一步即可获得所有产品结果。

所以可能不是你现在拥有的东西,但这可以作为一个例子,通过失去去规范化有点担心< / em>像这样的数据,你获得了好处。

因此,这里的一般情况是,如果您的“类别”信息很少发生变化,或者您可以生活追捕和更新“产品”文档,然后这是嵌入式架构真正帮助您的地方。

然后再说。我们对您提出问题的方式的数据知之甚少。到目前为止。