MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indici MongoDB sui documenti secondari non utilizzati in base alla sintassi della query

Penso di averlo capito dopo aver controllato i documenti di Mongo. Fondamentalmente, c'è una differenza di semantica tra i due. In sostanza, nella prima forma della query {c: {d: d1}} , mongo presuppone che tu stia specificando l'intero sottodocumento. Quindi, se hai un documento secondario {c: {d: d1, e: e1}} , non corrisponderà.

OTOH, la seconda forma della query {'c.d': d1} implica che stai specificando una corrispondenza solo su un campo all'interno del documento secondario. Ciò corrisponderebbe anche se il documento secondario ha altri campi o interi documenti secondari.

Questa differenza si estende all'indice. _ensureIndex({c: 1}) e _ensureIndex({'c.d': 1}) sono due indici diversi e, anche se il primo indicizza l'intero documento secondario, non verrà utilizzato se esegui query su un singolo campo con il c.d notazione.