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

Indexování paralelních polí v Mongodb

Než budu mluvit o možných řešeních, chci jen zdůraznit, proč si MongoDB vybral k vynucení tohoto omezení na indexování paralelních polí. Když indexujete pole v MongoDB, vytvoří se víceklíčový index s jedním klíčem na prvek pole. Pokud tedy vytvoříte složený index na dvou polích, jedno s M odlišnými hodnotami a druhé s N odlišnými hodnotami, index má v podstatě MN klíčů. To je velmi špatné – je to nelineární v počtu různých prvků pole. Zvažte množství práce, kterou vyžaduje udržování indexu, jako je tento, když přidáváte nebo odebíráte prvky pole.

OK, odůvodnění stranou, k obejití tohoto omezení bude užitečné použít aktuální verzi MongoDB (2.6), která podporuje protínání indexů. Je možné vytvořit index na CustomerInformations a VehicleLicenseDisks a MongoDB pak může používat oba indexy a protínat je, aby obsluhoval dotazy, které mají na oba omezení.

Pokud jste z jakéhokoli důvodu uvízli u MongoDB <2.6, pak máte možnost buď zvážit přepracování schématu, nebo se spolehnout na indexy, které používají maximálně jedno z polí pole.



  1. Načtení konkrétního klíče MongoDB z DuplicateKeyException, který byl skutečně duplikován (Java/Spring)

  2. Najít a upravit pomocí MongoDB C#

  3. Získejte pouze poslední prvek pole mongoose

  4. Jak mohu zakázat zprávy protokolu MongoDB v konzole?