假設我的父集合(Category)有一個名爲locale的字段。如何通過過濾MongoDB中的父項字段來查詢子項?
此類別可能有子類別和產品,產品可能在每個子類別中。
我需要的是,查詢所有父母的語言環境爲「en_US」的產品。
什麼是查詢或腳本來列出它?
假設我的父集合(Category)有一個名爲locale的字段。如何通過過濾MongoDB中的父項字段來查詢子項?
此類別可能有子類別和產品,產品可能在每個子類別中。
我需要的是,查詢所有父母的語言環境爲「en_US」的產品。
什麼是查詢或腳本來列出它?
這是不太可能會是你需要爲你的數據可能是結構不同的答案。但是,考慮以下文件:
{
"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" })
這會讓你在一個單一的步驟中的所有產品的結果。
這樣可能不是你有什麼權利,但這種作爲如何爲例,通過失去有點恐懼了這樣的數據去正常化,你從中獲益。
所以這裏的一般情況是,如果你的「類別」信息很少變化,或者你可以否則與追捕和「產品」文檔中更新生活,那麼這就是一個嵌入式架構真的可以幫助你。
然後再次。我們對您的問題的描述方式瞭解不多。迄今爲止。
我假設了很多關於您的架構,但是在外殼裏,你可以這樣做:
var parentCategories = db.category.find({locale: 'en_US'});
var categories = [];
parentCategories.forEach(function(category){
categories = categories.concat(db.category.find({parent_id: category._id}));
});
這裏有什麼回答你的問題嗎?如果不是,你能提供更多的信息,以便人們能夠正確回答。 –