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

mongoで同時にプルとaddtoset

    同じ更新操作で同じ「パス」の2つのことを実行できないため、エラーはほとんど意味します。使用している2つの演算子は、思ったとおりに順番に処理されません。

    ただし、「バルク」操作APIまたは他の形式の「バルク」更新で取得できるのと同じくらい「シーケンシャル」でこれを行うことができます。もちろん、その逆もあります:

    var bulk = db.coll.initializeOrderedBulkOp();
    bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags":  2 } });
    bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });
    
    bulk.execute();
    

    他に何も変更しようとしないという保証はありませんが、現在得られるものと同じくらい近いです。

    複数のドキュメントを含む生の「更新」コマンドも参照してください。



    1. pyarrowを使用してPandasデータフレームをRedisに設定/取得する方法

    2. MongoDBチュートリアル:ScalaでのMongoDBへの接続

    3. mongodb集約ソート

    4. MongoDBのワイルドカードインデックスの特定のフィールドを除外する