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

Indexy MongoDB na vnořených dokumentech, které se nepoužívají, na základě syntaxe dotazu

Myslím, že jsem na to přišel po kontrole mongo dokumentů. V podstatě existuje rozdíl v sémantice mezi těmito dvěma. V podstatě v první formě dotazu {c: {d: d1}} , mongo předpokládá, že zadáváte celý vnořený dokument. Pokud tedy máte vnořený dokument {c: {d: d1, e: e1}} , nebude to odpovídat.

OTOH, druhá forma dotazu {'c.d': d1} znamená, že zadáváte shodu pouze v jednom poli vnořeného dokumentu. To by odpovídalo, i když má vnořený dokument další pole nebo celé vnořené vnořené dokumenty.

Tento rozdíl se vztahuje i na index. _ensureIndex({c: 1}) a _ensureIndex({'c.d': 1}) jsou dva různé indexy, a přestože první indexuje celý vnořený dokument, nebude použit, pokud se dotazujete na jednotlivé pole pomocí c.d notace.




  1. Nemohu získat mongoida při práci s Rails 4

  2. Snižování výkonu aktualizací mongoldb dokumentů s rostoucím záznamem

  3. Jak mohu spustit redis na jednom serveru na různých portech?

  4. Autentizace během připojení k instanci serveru MongoDB pomocí Java