Обновление 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 }
});
}
});
Работает отлично:)