2012-11-19 206 views
18

我試圖對一個子文檔中貓鼬一findOne查詢,但我並沒有多少運氣...findOne子文檔中貓鼬

我的模式是這樣的:

var Team = mongoose.Schema({ 
    teamName:  String, 
    teamURL:  String, 
    teamMembers: [{username: String, password: String, email: String, dateCreated: Date}], 
}); 

var Team = db.model('Team', Team); 

我需要簡單地找到我使用此查詢的文檔中的用戶電子郵件

Team.findOne({'teamMembers.username': 'Bioshox'}, {'teamMembers.$': 1}, function (err, team) { 
    if (team) { 
     console.log(team[1].email); 
    } 
}); 

任何幫助,將不勝感激!

+0

我有一個非常類似的問題[這裏](https://stackoverflow.com/問題/ 44679355 /如何獲得子文件只在貓鼬)你可以看看嗎? – Saad

回答

32

你錯過了teamMembers水平的對象,所以你的代碼需要改變的東西是這樣的:

Team.findOne({'teamMembers.username': 'Bioshox'}, {'teamMembers.$': 1}, 
    function (err, team) { 
     if (team) { 
      console.log(team.teamMembers[0].email); 
     } 
    } 
); 
+0

你可以使用.populate('teamMembers')嗎? – chovy

+0

@chovy不,「populate」只適用於ObjectId域。 – JohnnyHK

+4

你能解釋一下'{'teamMembers。$':1}'還是指向它的文檔? – chovy