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

MongoDB atomic findOrCreate:findOne, indsæt hvis den ikke findes, men opdater ikke

Fra og med MongoDB 2.4 er det ikke længere nødvendigt at stole på et unikt indeks (eller nogen anden løsning) for atomic findOrCreate som operationer.

Dette er takket være $setOnInsert operatør ny til 2.4, som giver dig mulighed for at angive opdateringer, som kun skal ske, når du indsætter dokumenter.

Dette kombineret med upsert option, betyder, at du kan bruge findAndModify for at opnå en atomisk findOrCreate -lignende operation.

db.collection.findAndModify({
  query: { _id: "some potentially existing id" },
  update: {
    $setOnInsert: { foo: "bar" }
  },
  new: true,   // return new doc if one is upserted
  upsert: true // insert the document if it does not exist
})

Som $setOnInsert påvirker kun dokumenter, der indsættes, hvis et eksisterende dokument findes, vil der ikke ske nogen ændring. Hvis der ikke eksisterer et dokument, vil det ophæve et med det angivne _id, og derefter udføre kun indsættelsessættet. I begge tilfælde returneres dokumentet.



  1. MongoDB $slice

  2. Hvordan bruger du $set i MongoDB til at opdatere en indlejret værdi/indlejret dokument?

  3. Udskrivning af Mongo-forespørgselsoutput til en fil, mens du er i mongo-skallen

  4. MurmurHash - hvad er det?