Мангуста найти по под-документ Id, а затем отобразить элементы в массиве - PullRequest
0 голосов
/ 31 августа 2018

Я нашел этот поддокумент по его matchName и teamName, и я хочу показать, что находится в Players [] для указанного teamName. Журналы помогают вам понять, что я преследую.

Вот схема

 var MatchSchema({
   matchName: {
     type: String,
     unique: true,
   },
   teams: [{
     teamName: String,
     players: [] <------ this is the array I want to display
   }]
 });

Вот находкаOneAndUpdate

var filter = {matchName: 'matchOne', 'teams.teamName': 'teamOne'}
var update = {$push: {'teams.$.players': 'playerOne'}}
var option = {new: true}

Match.findOneAndUpdate(filter, update, option, function (err, result) {
  if (err) {
    console.log(err);
  } else {
      console.log(result); <--- First Test
    }
})

Первый тест регистрирует это

{ _id: 5b8899ebe9bc4450811b18a5,
  matchName: 'matchOne',
  teams: 
   [ { players: ['playerOne'], _id: 5b8899efe9bc4450811b18a6, teamName: 'teamOne' } ]
} // Logs the Entire Match

Второй тест

Match.findOneAndUpdate(filter, update, option, function (err, result) {
      if (err) {
        console.log(err);
      } else {
          console.log(result.teams); <--- Second Test
        }
    })

Второй тест регистрирует это

CoreMongooseArray [
  { players: [ 'playerOne' ], <--- what I want to log
    _id: 5b8862912733184d499c2f2e,
    teamName: 'teamOne' } 
] // Logs the Array of the Teams

Теперь ... Я хочу знать, как регистрировать массив игроков, когда я указываю teamName. Нечто подобное ...

console.log(teams.teamName = "teamOne".players);

________ UPDATE _________

Я использовал метод _id для отображения массива игроков

console.log(result.teams.id(req.params.id).players)

Я дал командам объект _id, чтобы я мог использовать метод .id для mongoose

 var MatchSchema({
   matchName: {
     type: String,
     unique: true,
   },
   teams: [{
     _id: String, <------ can be used in the .id method to identify this team
     teamName: String,
     players: []
   }]
 });
...