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

MongoDB indekserer underdokumenter, der ikke bruges, baseret på forespørgselssyntaks

Jeg tror, ​​jeg fandt ud af det efter at have tjekket mongo-dokumenterne. Grundlæggende er en forskel i semantik mellem de to. I det væsentlige, i den første form af forespørgslen {c: {d: d1}} , mongo antager, at du angiver hele underdokument. Så hvis du har et underdokument {c: {d: d1, e: e1}} , vil det ikke matche.

OTOH, den anden form af forespørgslen {'c.d': d1} betyder, at du kun angiver et match på ét felt i underdokumentet. Dette ville matche, selvom underdokumentet har andre felter eller hele underunderdokumenter.

Denne forskel strækker sig til indekset. _ensureIndex({c: 1}) og _ensureIndex({'c.d': 1}) er to forskellige indekser, og selvom det første indekserer hele underdokumentet, vil det ikke blive brugt, hvis du forespørger på et individuelt felt med c.d notation.




  1. node.js moongodb to fund

  2. Arkitektur til Redis cache &Mongo for vedholdenhed

  3. MongoDB Schema Design - Ny samling eller reference?

  4. hvad er mekanismen til at udføre en skæring i en Mongo Linq-forespørgsel