2016-09-29 1 views
0

J'essaye de mettre à jour une valeur dans mon DB complet pour chaque réunion que j'ai. Actuellement, il ressemble à ceci:Mise à jour de MongoCollection où une valeur est égale à quelque chose

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

Je veux que cela se produise:

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

Il est évident que le code ne fonctionne pas au-dessus pour une MongoCollection, mais je l'espère, il est logique. Je veux définir un référent de réunion à un participant (premier ou dernier) au hasard qui est présent à la réunion. Comment pourrais-je faire cela en utilisant MongoCollection, donc je peux l'exécuter dans mon Mongo Shell?

Répondre

0

Oh, je n'ai jamais su que vous pouviez taper Javascript dans le shell Mongo. C'est ce que j'ai fini avec:

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 } 
     }); 
    } 
}); 

fonctionne parfaitement :)