0

私はmongodbを初めて使用します。埋め込みドキュメントを追加するときに、アクティブフィールドではなくperson_Idのみをチェックできる方法があるかどうか疑問に思いました。私はperson_idが重複していないことだけを気にします

    collection.update({'_id':new BSON.ObjectID(business_id)}, {$addToSet: {members : {person_Id : person_id, active : true }}}, {safe:true}, function(err, result) {
        if (err) {
            console.log('Error updating person: ' + err);
        } else {
            console.log('' + result + ' document(s) updated');
            callback(result);
        }
    });
4

1 に答える 1

0

あなたの質問を正しく理解していれば、答えはイエスです。メンバーがその特定の person_id を持つメンバーを含むべきではないという基準をクエリに入れることができます:

update({'_id':new BSON.ObjectID(business_id), 'members.person_id':{$ne:person_id}}, {$push: {members : {person_Id : person_id, active : true }}}

これにより、business_id が一致し、members 配列に person_id を持つメンバーが含まれていない場合にのみ、新しいメンバー レコードが members 配列にプッシュされます。このアプローチはアップサートと相互に排他的であることに注意してください。

于 2013-02-11T13:56:44.783 に答える