2016-09-29 2 views
0

Я пытаюсь обновить значение во всей своей БД для каждой встречи, которую у меня есть. В настоящее время это выглядит следующим образом:MongoCollection update, где значение равно чему-то

{ 
    "Referent" : null 
    "Participants" : [ 
     { 
      "Email" : "[email protected]", 
      "Present" : true 
     }, 
     { 
      "Email" : "[email protected]", 
      "Present" : false 
     }, 
     { 
      "Email" : "[email protected]", 
      "Present" : true 
     } 
    ] 
} 

Я хочу, чтобы это произошло:

if(meeting.Referent == null) { 
    foreach(var participant in meeting.Partipants) { 
     if(participant.Present) { 
      meeting.Referent = participant.Email; 
     } 
    } 
} 

Очевидно, что приведенный выше код не работает для MongoCollection, но я надеюсь, что это имеет смысл. Я хочу назначить референдум встречи случайному (первому или последнему) участнику, присутствующему на собрании.

Как бы это сделать, используя MongoCollection, чтобы я мог запустить его в своей Монго-оболочке?

ответ

0

О, хорошо, я никогда не знал, что вы можете ввести Javascript в Mongo Shell. Это то, что я закончил с:

var meetings = db.meetings.find({ 
     Referent: null 
}).toArray(); 

meetings.forEach(function(meeting) { 
    if(meeting.Participants.length > 0) { 
     meeting.Participants.forEach(function(participant) { 
      if(participant.Present) { 
       meeting.Referent = participant.Email; 
      } 
     }); 
     if(meeting.Referent == null) { 
      meeting.Referent = meeting.Participants[0].Email; 
     } 
     db.meetings.updateOne({ 
      "_id": meeting._id 
     }, { 
      $set: {"Referent": meeting.Referent } 
     }); 
    } 
}); 

отлично работает :)

Смежные вопросы