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

oprette mongodb-dokument med underdokumenter atomært?

Opdater med upsert=true kan bruges til at udføre en atomisk "indsæt eller opdatering" (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag ).

For eksempel hvis vi ønsker at sikre et dokument i Front-samling med specifik url er indsat præcis én gang, kunne vi køre noget som:

db.Front.update(
    {url: 'http://example.com'},
    {$set: {
       url: 'http://example.com'},
       found: true
    }
)

Operationer på et enkelt dokument i MongoDB er altid atomare. Hvis du laver opdateringer, der strækker sig over flere dokumenter, er der ingen garanti for atomicitet. I sådanne tilfælde kan du spørge dig selv:har jeg virkelig brug for, at operationerne er atomare? Hvis svaret er nej, vil du sandsynligvis finde rundt i at arbejde med potentielt uensartede data. Hvis svaret er ja, og du vil holde dig til MongoDB, så tjek designmønsteret på Tofaseforpligtelser .




  1. Hvordan bruger man MongoDB Stitch Auth i isomorphic eller SSR app?

  2. Mongoose slutter sig til to samlinger og får refererede data i to ejendomme

  3. Denne node blev ikke startet med replSet-indstillingen

  4. Mongo aggregeringsramme, sorter og derefter gruppe fungerer ikke