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

アトミック操作で1つのドキュメントのブールフィールドを切り替える方法は?

    今のところ、1回の操作でこれを行うことはできないと思います。ビット単位の演算子(http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit)には、パッチがありますが、まだ「$xor」がありません。

    今のところ、私が考える回避策は、常に「$ inc」を使用することです:

    cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );

    次に、trueまたはfalseをチェックする代わりに、アイテムが「true」であるかどうかをチェックできます。

    cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );

    IEでは、モジュロ演算子を使用して、「設定されていない」場合でも不均一である場合と「設定されている」場合でも不均一であるかどうかを確認します。反対の動作をしたい場合(つまり、フラグが設定されていないすべてのアイテムを検索する場合)、

    を使用します。
    [ 2, 0 ];


    1. 2022年のMongoDBチュートリアル– MongoDBとは何ですか?

    2. MongoDB Aggregation:前の行の合計から現在の合計を計算する

    3. MongoDB:配列フィールドに要素が含まれているかどうかを確認するにはどうすればよいですか?

    4. goMongoDBのようなクエリ式オブジェクト評価の実装