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

Jak implementujete automaticky se zvyšující primární ID v MongoDB?

Budete muset použít příkaz findAndModify MongoDB. S ním můžete atomicky vybrat a zvýšit pole.

db.seq.findAndModify({
  query: {"_id": "users"},
  update: {$inc: {"seq":1}},
  new: true
});

Tím se zvýší počítadlo pro users kolekce, kterou pak můžete přidat do dokumentu před vložením. Vzhledem k tomu, že je atomární, nemusíte se starat o podmínky závodu způsobující konfliktní ID.

Není to tak bezproblémové jako auto_increment MySQL příznak, ale obvykle máte také možnost specifikovat vlastní továrnu ID v ovladači Mongo, takže byste mohli implementovat továrnu, která používá findAndModify k transparentnímu zvyšování a vracení ID, což má za následek mnohem více prostředí podobné MySQL.

Nevýhodou tohoto přístupu je, že vzhledem k tomu, že každý insert je závislý na zámku pro zápis ve vaší kolekci sekvencí, pokud provádíte hodně zápisů, můžete skončit velmi rychle úzkým hrdlem. Chcete-li pouze zaručit, že dokumenty ve sbírce budou seřazeny podle pořadí vložení, podívejte se na Limitované kolekce.



  1. Porovnání vzorů nasazení pro MongoDB

  2. Monitorování databáze bez agenta pomocí ClusterControl

  3. Jak nastavit kontejner Docker redis s ssl

  4. Ověření jedinečnosti vloženého dokumentu vymezeného jeho nadřazeným prvkem v mongoose