sql >> データベース >  >> NoSQL >> MongoDB

マングースで配列値を更新する方法

    $setの両方を使用することはできません および$push ネストされた演算子と同じ更新式で。

    更新演算子を使用するための正しい構文は次のとおりです。

    {
       <operator1>: { <field1>: <value1>, ... },
       <operator2>: { <field2>: <value2>, ... },
       ...
    }
    

    ここで、<operator1>, <operator2> ここで指定された更新演算子リストのいずれかから取得できます。

    配列に新しい要素を追加するには、単一の $push オペレーターで十分です。 findByIdAndUpdateを使用できます 変更されたドキュメントを次のように返すupdateメソッド

    Employeehierarchy.findByIdAndUpdate(employeeparent._id,
        { "$push": { "childrens": employee._id } },
        { "new": true, "upsert": true },
        function (err, managerparent) {
            if (err) throw err;
            console.log(managerparent);
        }
    );
    

    オリジナルのupdate()を使用する メソッド、構文は

    Employeehierarchy.update(
       { "_id": employeeparent._id},
       { "$push": { "childrens": employee._id } },
       function (err, raw) {
           if (err) return handleError(err);
           console.log('The raw response from Mongo was ', raw);
       }
    );
    

    コールバック関数が引数(err, raw)を受け取る ここで

    • err 発生した場合のエラーです
    • raw モンゴからの完全な回答です

    変更されたドキュメントを確認したいので、 findByIdAndUpdateを使用することをお勧めします update()以降の関数 メソッドは変更されたドキュメントを提供せず、mongoからの完全な書き込み結果のみを提供します。

    ドキュメントのフィールドを更新すると同時に配列に要素を追加する場合は、次のことができます

    Employeehierarchy.findByIdAndUpdate(employeeparent._id,
        { 
            "$set": { "name": "foo" },
            "$push": { "childrens": employee._id } 
        } 
        { "new": true, "upsert": true },
        function (err, managerparent) {
            if (err) throw err;
            console.log(managerparent);
        }
    );
    

    上記はnameを更新します フィールドを「foo」に設定し、従業員IDをchildrensに追加します 配列。



    1. MongoDBでコンソールをクリアする方法

    2. MongoDBでのジャーナリングの管理

    3. モンゴ固有のインデックスの大文字と小文字を区別しない

    4. RedisからのUnicodeのカプセル化