MongoCollection更新,其值等于

时间:2016-09-29 12:43:14

标签: mongodb mongo-collection

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

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

1 个答案:

答案 0 :(得分: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 }
        });
    }
});

完美地工作:)