sql >> Database >  >> NoSQL >> MongoDB

MongoDB-indexen op subdocumenten die niet worden gebruikt op basis van de syntaxis van de query

Ik denk dat ik erachter ben gekomen na het controleren van de Mongo-documenten. In principe is er is een verschil in semantiek tussen die twee. In wezen, in de eerste vorm van de zoekopdracht {c: {d: d1}} , mongo gaat ervan uit dat u de volledige . opgeeft subdocument. Dus als je een subdocument hebt {c: {d: d1, e: e1}} , het komt niet overeen.

OTOH, de tweede vorm van de zoekopdracht {'c.d': d1} houdt in dat u slechts een overeenkomst opgeeft voor één veld in het subdocument. Dit zou overeenkomen, zelfs als het subdocument andere velden of volledige sub-subdocumenten heeft.

Dit verschil strekt zich uit tot de index. _ensureIndex({c: 1}) en _ensureIndex({'c.d': 1}) zijn twee verschillende indexen, en hoewel de eerste het hele subdocument indexeert, zal het niet worden gebruikt als je op een individueel veld zoekt met de c.d notatie.




  1. Mongoïde met rails, attr_accessible --> Geen methode gevonden

  2. Hoe exporteer ik een object dat pas beschikbaar komt in een asynchrone callback?

  3. Importeer CSV-gegevens als een array in MongoDB met behulp van mongoimport

  4. Als Redis single Threaded is, hoe kan het dan zo snel zijn?