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

Rozdíl mezi ukládáním ObjectId a jeho řetězcovou formou v MongoDB

Osobně obviňuji váš kód. Ve svých aplikacích to dokonale obcházím správným kódováním. Převedu na řetězec v kódu pro porovnání a zajistím, že vše, co vypadá jako ObjectId se ve skutečnosti používá jako ObjectId .

Je dobré poznamenat, že mezi ObjectId (http://docs.mongodb.org/manual/reference/object-id/) a je to hexová reprezentace, ve skutečnosti je rozdíl 12 bajtů, ObjectId je 12 bajtů a jeho hexadecimální reprezentace je 24.

Nejde jen o efektivitu úložiště, ale také o indexy; nejen proto, že jsou menší, ale také kvůli ObjectId lze použít zvláštním způsobem, aby bylo zajištěno, že budou načteny pouze části indexu; díly, které se používají. Nejzřetelnější je to při vkládání, kdy je pro zajištění jedinečnosti potřeba načíst pouze nejnovější část tohoto indexu. Nemůžete zaručit takové chování s jeho hexadecimální reprezentací.

Důrazně bych vám doporučil nepoužívat OjbectId hex reprezentace. Pokud si chcete "ulehčit život", bylo by lepší vytvořit jiné _id který je menší, ale nějak stejně jedinečný a přátelský k indexům.



  1. Jak provést addToSet pomocí oficiálního ovladače Go?

  2. Jak vytvořit konfigurační soubor pro MongoDB

  3. redis:reset počítadla každý den

  4. Spuštění více instancí Redis na Centos