2014-02-26 43 views
0

假設我的父集合(Category)有一個名爲locale的字段。如何通過過濾MongoDB中的父項字段來查詢子項?

此類別可能有子類別和產品,產品可能在每個子類別中。

我需要的是,查詢所有父母的語言環境爲「en_US」的產品。

什麼是查詢或腳本來列出它?

+0

這裏有什麼回答你的問題嗎?如果不是,你能提供更多的信息,以便人們能夠正確回答。 –

回答

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" }) 

讓你在一個單一的步驟中的所有產品的結果。

這樣可能不是你有什麼權利,但這種作爲如何爲例,通過失去有點恐懼了這樣的數據去正常化,你從中獲益。

所以這裏的一般情況是,如果你的「類別」信息很少變化,或者你可以否則追捕和「產品」文檔中更新生活,那麼這就是一個嵌入式架構真的可以幫助你。

然後再次。我們對您的問題的描述方式瞭解不多。迄今爲止。

0

我假設了很多關於您的架構,但是在外殼裏,你可以這樣做:

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