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

配列にのみ一意を追加し、更新時にフィールド数を維持します

    このタイプの操作では、 $ addToSet もちろん、 $ inc 配列に何かが追加されたかどうか(「set」)に関係なく発生します。

    代わりに、 $ neを使用してアレイをテストしてください。 クエリの演算子:

    db.collection.update(
        { "unique_array": { "$ne": 18 } },    <-- existing element
        { 
            "$push": { "unique_array": 18 },
            "$inc": { "size_of_array": 1 }
        }
    )
    

    配列メンバーの削除についても同じことが言えますが、もちろん今回は同等の存在をテストします:

    db.collection.update(
        { "unique_array": 18 },    <-- existing element
        { 
            "$pull": { "unique_array": 18 },
            "$inc": { "size_of_array": -1 }
        }
    )
    

    クエリ条件が一致する必要があるため、追加時に配列要素がすでに存在していた場合、一致はなく、 $ push または$inc 操作が実行されます。また、 $ pullについても同じことが言えます。 要素が配列に存在しない場合。




    1. HBaseコンパクションとは何ですか?

    2. MongoDB:同じコレクションからのすべての結果を結合する方法は?

    3. MongoDBクライアントがmscorlibでFileNotFoundExceptionをスローします

    4. マングースサブドキュメントとネストされたスキーマ