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

MongoDB opdaterer felter i indlejret array

Dette problem er blevet løst. Funktionen til opdatering af felter i indlejret række af objekter er tilgængelig i MongoDB 3.6+ versioner. Se positionelle operatorer (alle og med identifikator) her.

//Update all docs in collection matching photo name "play" to "play photo"
db.collectioname.update(
    {},
    { $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
    { arrayFilters: [  {"photo_field.name": "play"} ], multi: true}
);

//Update this specific doc given in question matching photo name "play" to "play photo"
db.collectioname.update(
    {"_id" : ObjectId("4f41a5c7c32810e404000000")},
    { $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
    { arrayFilters: [  {"photo_field.name": "play"} ]}
);

Dette er til hjælp for folk, der kommer her efter MongoDB 3.6



  1. Sådan får du klienten til at downloade en meget stor fil, der genereres i farten

  2. Sådan starter du redis-server på en anden port end standardporten 6379 i ubuntu

  3. MongoDB $tan

  4. Mongo konverterer alle numeriske felter, der er gemt som streng