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

mongoDBの配列内の要素を切り替える方法

    ドキュメントを更新する場合は、 update内でパイプラインを使用できます 。ただし、この機能はMongoDBバージョン4.2以降で使用できます。

    db.collection.update(
      { },
      [
         { 
              $set: { 
                  arr: { 
                      $cond: [ { $in: [ element, "$arr" ] }, 
                               { $setDifference: [ "$arr", [ element ] ] }, 
                               { $concatArrays: [ "$arr", [ element ] ] } 
                      ] 
                  }
              }
         }
      ]
    )
    

    注: 変数elementを想定 文字列です 価値。

    クエリを実行するだけの場合は、次の集計を使用できます。

    db.collection.aggregate([
         { 
              $addFields: { 
                  arr: { 
                      $cond: [ { $in: [ element, "$arr" ] }, 
                               { $setDifference: [ "$arr", [ element ] ] }, 
                               { $concatArrays: [ "$arr", [ element ] ] } 
                      ] 
                  }
              }
         }
    ] )
    

    ただし、4.2より前のバージョンのMongoDBを使用している場合は、上記の集計出力を使用してドキュメントを更新できます。

    db.collection.aggregate( [
      // aggregation pipeine from above ...
    ] ).forEach( doc => db.collection.updateOne( { _id: doc._id }, { $set: { arr: doc.arr } } ) )
    


    1. グループごとの連結文字列

    2. anglejsを使用してmongodbに特定の配列値を挿入する方法

    3. CouchDB入門

    4. エラー:redis:6379でRedisに接続できませんでした:名前またはサービスが不明です