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

MongoDB-opdateringMange med Betinget

Du vil virkelig gerne have bulkWrite() ved hjælp af to "updateMany" udsagn i den i stedet. Aggregeringsudtryk kan ikke bruges til at udføre "alternerende valg" i nogen form for opdateringssætning.

db.country.bulkWrite([
  { "updateMany": {
    "filter": { "pop": { "$lt": 20000000 } },
    "update": { "$set": { "country": "Small Country" } }
  }},
  { "updateMany": {
    "filter": { "pop": { "$gt": 20000000 } },
    "update": { "$set": { "country": "Large Country" } } 
  }}
])

Der er stadig en udestående "funktionsanmodning" på SERVER-6566 for "betinget syntaks", men dette er endnu ikke løst. "Bulk" API'en blev faktisk introduceret efter denne anmodning blev rejst, og kan virkelig tilpasses som vist at gøre mere eller mindre det samme.

Bruger også $out i en aggregeringserklæring, som det ellers blev foreslået, er det ikke en mulighed at "opdatere" og kan kun skrive til en "ny samling" pt. Den planlagte ændring fra MongoDB 4.2 og fremefter ville tillade $out til faktisk at "opdatere" en eksisterende samling, dog dette ville kun være, hvor den samling, der skal opdateres, er forskellig fra enhver anden samling, der bruges til indsamling af data fra aggregeringspipelinen. Så det er ikke muligt at bruge en aggregeringspipeline til at opdatere den samme indsamling som det du læser fra.

Kort sagt, brug bulkWrite() .




  1. Ember data-hierarki på flere niveauer med indlejret altid

  2. Hvordan kan jeg bruge MongoDB til at finde alle dokumenter, der har et felt, uanset værdien af ​​dette felt?

  3. Projekt et element returneret med $arrayElemAt

  4. Vis dataene på websiden hentet fra mongodb ved hjælp af node.js