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.