sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan opdaterer man undersæt af en streng i MongoDB?

Du kan bruge en af ​​følgende sammenlægninger til at forespørge og opdatere:

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 } } ) )


Med MongoDB version 4.2+ du kan angive sammenlægningen i stedet for en opdatering operation med 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. Sådan skifter du et element i array i mongoDB

  2. Billedet gengives ikke fra dynamisk billedsti under brug af ekspres html-pdf-pakke

  3. Sådan erstatter du streng i alle dokumenter i Mongo

  4. omdøb en samling med mongoDB