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

MongoDBで文字列のサブセットを更新するにはどうすればよいですか?

    次の集計のいずれかを使用して、クエリと更新を行うことができます。

    db.test.aggregate( [
      {
          $match: {
               url: { $regex: "300x300" }
          }
      },
      { 
          $addFields: { 
              url: { $split: [ "$url", "300" ] } 
          } 
      },
      { 
          $addFields: { 
              url: { 
                  $concat: [ 
                            { $arrayElemAt: [ "$url", 0 ] }, 
                            "600", 
                            { $arrayElemAt: [ "$url", 1 ] }, 
                            "600", 
                            { $arrayElemAt: [ "$url", 2 ] }
                  ] 
              }
          }
     }
    ] ).forEach( doc => db.test.updateOne( { _id: doc._id }, { $set: { url: doc.url } } ) )
    


    MongoDBバージョン4.2以降 更新の代わりに集計を指定できます updateMany を使用した操作 :

    db.test.updateMany(
      { 
          url: { $regex: "300x300" }
      },
      [
        { 
          $addFields: { 
              url: { $split: [ "$url", "300" ] } 
          } 
        },
        { 
          $addFields: { 
              url: { 
                  $concat: [ 
                            { $arrayElemAt: [ "$url", 0 ] }, 
                            "600", 
                            { $arrayElemAt: [ "$url", 1 ] }, 
                            "600", 
                            { $arrayElemAt: [ "$url", 2 ] }
                  ] 
              }
          }
        }
      ] 
    )
    


    1. null値のMongoDBクエリ

    2. GridFSmongodbからオーディオ/ビデオをストリーミングするためのAPIを構築する

    3. スキーマを定義せずにMongooseをどのように使用しますか?

    4. MongoDBグループと異なるドキュメントからの値の減算