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

MongoDB atomic findOrCreate:findOne, vložte, pokud neexistuje, ale neaktualizujte

Počínaje MongoDB 2.4 již není nutné spoléhat se na jedinečný index (nebo jakékoli jiné řešení) pro atomické findOrCreate jako operace.

Je to díky $setOnInsert operátor new to 2.4, který umožňuje specifikovat aktualizace, ke kterým by mělo dojít pouze při vkládání dokumentů.

To v kombinaci s upsert znamená, že můžete použít findAndModify k dosažení atomového findOrCreate -jako operace.

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

Jako $setOnInsert ovlivňuje pouze vkládané dokumenty, pokud je nalezen existující dokument, nedojde k žádné změně. Pokud žádný dokument neexistuje, převede dokument se zadaným _id a poté provede sadu pouze vložení. V obou případech je dokument vrácen.



  1. Vysvětlení možností časového limitu klienta MongoDB

  2. Má MongoDB nativní rozhraní REST?

  3. Catbox-redis zobrazuje chybu odpojení v mé aplikaci hapijs

  4. Redis – Zvažte přejmenování jednoho z fazolí nebo povolení přepsání nastavením spring.main.allow-bean-definition-overriding=true