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

Je Mongodb ObjectID jedinečné mezi dokumenty?

Je jedinečný pro všechny praktické účely. Zmíněná nejedinečnost je spíše teoretická.

Je vytvořeno ID objektu mimo

  • časové razítko (sekundy od epochy)
  • identifikátor stroje
  • ID procesu
  • a 3bajtový čítač začínající náhodnou hodnotou každou sekundu

Takže v mediánu, pokud nenapíšete více než 3080 dokumentů za sekundu na klienta, měli byste být ušetřeni. Je třeba poznamenat, že _id má jedinečné omezení:I když pokud byste zkusili napsat stejné ObjectId dvakrát, byla by výjimka.

Vedlejší poznámka:dokonce i hashovací algoritmy jako MD5 nebo (v menší míře) SHA256 mají malou šanci na kolize. Ale s jedinečným omezením jste v bezpečí.

Upravit :Vzhledem k tomu, že výjimka je vyvolána ve velmi, velmi, velmi vzácném případě, že jsou vygenerována dvě identická ObjectId a pokusí se je zapsat současně, jednoduše je zpracujete vygenerováním nového ObjectId a pokusíte se dokument uložit znovu.



  1. Chyba:jsou vyžadovány argumenty data a salt

  2. Zkontrolujte, zda běží redis -> node js

  3. mongoose findById funguje, když používám řetězcový literál, ale ne, když odkazuji na vlastnost objektu

  4. Automatické zálohování MongoDB