sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB atomic findOrCreate:findOne, infoga om det inte finns, men uppdatera inte

Från och med MongoDB 2.4 är det inte längre nödvändigt att förlita sig på ett unikt index (eller någon annan lösning) för atomic findOrCreate som operationer.

Detta tack vare $setOnInsert operatör ny till 2.4, som låter dig ange uppdateringar som endast ska ske när du infogar dokument.

Detta i kombination med upsert alternativet betyder att du kan använda findAndModify för att uppnå en atomär findOrCreate -liknande 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åverkar endast dokument som infogas, om ett befintligt dokument hittas kommer ingen ändring att ske. Om det inte finns något dokument, kommer det att lägga upp ett med det angivna _id, och sedan utföra insättningsuppsättningen. I båda fallen returneras dokumentet.



  1. Hur du säkrar dina Open Source-databaser med ClusterControl

  2. docker-compose + django + redis - Fel 111 vid anslutning till 127.0.0.1:6379. Anslutningen vägrades

  3. Redis Support på sekundärt index

  4. Vilket är det mest tidseffektiva sättet att serialisera/deserialisera en DataTable till/från Redis?