0

我正在尝试为每次会议更新整个数据库中的值。目前它看起来像这样:

{
    "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 Shell 中运行它?

4

1 回答 1

0

哦,太好了,我从来不知道你可以在 Mongo Shell 中输入 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 }
        });
    }
});

完美运行:)

于 2016-09-29T13:07:04.310 回答