2012-11-19 204 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