MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Índices do MongoDB em subdocumentos que não estão sendo usados ​​com base na sintaxe da consulta


Acho que descobri depois de verificar os documentos do Mongo. Basicamente, existe uma diferença na semântica entre os dois. Essencialmente, na primeira forma da consulta {c: {d: d1}} , o mongo assume que você está especificando o todo subdocumento. Portanto, se você tiver um subdocumento {c: {d: d1, e: e1}} , não corresponderá.

OTOH, a segunda forma da consulta {'c.d': d1} implica que você está especificando apenas uma correspondência em um campo dentro do subdocumento. Isso corresponderia mesmo se o subdocumento tiver outros campos ou subdocumentos inteiros.

Essa diferença se estende ao índice. _ensureIndex({c: 1}) e _ensureIndex({'c.d': 1}) são dois índices diferentes e, embora o primeiro indexe todo o subdocumento, ele não será usado se você consultar um campo individual com o c.d notação.