假设我的父集合(类别)有一个名为locale的字段。
此类别可能包含子类别和产品,产品可以位于每个子类别中。
我需要的是查询其父级语言环境为“en_US”的所有产品。
要列出的查询或脚本是什么?
答案 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>像这样的数据,你获得了好处。
因此,这里的一般情况是,如果您的“类别”信息很少发生变化,或者您可以生活追捕和更新“产品”文档,然后这是嵌入式架构真正帮助您的地方。
然后再说。我们对您提出问题的方式的数据知之甚少。到目前为止。