Обновление MongoCollection, где значение равно чему-либо

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

{
    "Referent" : null
    "Participants" : [ 
        {
            "Email" : "mail@mail1.com",
            "Present" : true
        }, 
        {
            "Email" : "mail@mail2.com",
            "Present" : false
        }, 
        {
            "Email" : "mail@mail3.com",
            "Present" : true
        }
    ]
}

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

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

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

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

1 ответ

О, хорошо, я никогда не знал, что ты можешь ввести Javascript в оболочку Монго. Вот чем я закончил:

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

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

Другие вопросы по тегам