2013-06-28 172 views
0

我想找到一個問題讓我忙了好幾天。我想查找和更新MongDB集合中的嵌入式文檔(使用貓鼬)。這是可能的,我知道。你可以這樣做:在MongoDB中查找沒有_id的嵌入式文檔

User.findOne({_id: id}, function(err, user) { 
var embeddedDoc = user.embeddedDocs.id('embeddedDocId'); 
}); 

這確實有效。但是,只有當您具有我不知道的具體docId時(嵌入式文檔可以是數組的項目(x))。

我的問題是,這有可能嗎?或者,mongodb是否不讓我們在沒有提供Id的情況下找到嵌入式文檔?

問候,Douwe。

+2

如果你提供正確的查詢,你幾乎可以找到任何東西...。我不明白你在找什麼。如果您沒有嵌入式文檔ID,您將如何找到它? – WiredPrairie

回答

0

是的,你可以。 使用點符號指定要查找的嵌入文檔的屬性。 假設你有一個人的集合,像這樣的文檔:

{ 
    _id:123, 
    name:"john", 
    address: { 
     Street:"any", 
     zip:1234 
    } 
} 

然後你就可以找到一個人通過的地址欄像這樣的查詢:

db.persons.find("address.zip":1234, ...) 

只是認爲它不會給你只有嵌入式文檔,但整個文檔(在這種情況下的人)