0

会議ごとに DB 全体の値を更新しようとしています。現在、次のようになっています。

{
    "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 に答える