2012-11-19 20 views
18

Ja próbuje zapytanie findOne w Mongoose na dokument podrzędny, ale nie mam dużo szczęścia ...findOne dokument podrzędny w Mongoose

My Schemat wygląda następująco:

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

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

muszę po prostu znajdź użytkowników e-mail z dokumentu, w którym używam tego zapytania:

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

Każda pomoc będzie doceniona!

+0

Mam bardzo podobny problem [tutaj] (https://stackoverflow.com/ pytania/44679355/how-to-get-sub-document-only-in-mongoose) możesz rzucić okiem? – Saad

Odpowiedz

32

Brakuje poziom swojego obiektu teamMembers, więc kod musi się zmienić, aby coś takiego:

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

możesz również użyć .populate ("teamMembers")? – chovy

+0

@chovy Nie, 'populate' działa tylko w polach' ObjectId'. – JohnnyHK

+4

Czy możesz wytłumaczyć '{'teamMembers. $': 1}' lub wskazać dokumentację na ten temat? – chovy

Powiązane problemy