sql >> Databáze >  >> NoSQL >> MongoDB

Jak aktualizovat podmnožinu řetězce v MongoDB?

K dotazování a aktualizaci můžete použít jednu z následujících agregací:

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


S MongoDB verze 4.2 a vyšší místo aktualizace můžete zadat agregaci operace s 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. Chyba při získávání MongoDB podle _Id ve Flasku

  2. Celkový počet návratů MongoDB je 0, pokud nejsou žádné výsledky

  3. Jak odstranit duplikáty s určitou podmínkou v mongodb?

  4. Meteor Subscribe neaktualizuje pořadí řazení kolekce