sql >> Database >  >> NoSQL >> MongoDB

Optimale samengestelde indexen voor $exists:true (dunne indexen)

Wat je hier niet lijkt te begrijpen, is dat $exists kan op geen enkele manier een index "grijpen", zelfs als deze schaars is. Zoals de documentatie zelf zegt:

Het voorbeeld op die pagina's is een { "$exists": false } vraag. Maar de omgekeerde logische voorwaarde maakt hier geen verschil.

Om het "volledige voordeel" van een "dunne" index te krijgen, moet u rekening houden met het "type" gegevens dat het bevat en de juiste query uitvoeren.

Voor numeriek, zoiets als:

db.collection.find({ "a": "foobar", "b": { "$gte": -9999, "$lte": 9999 } })

Die een index gebruikt, en de schaarse. Of voor op tekst gebaseerde:

db.collection.find({ "a": "foobar", "b": /.+/ })

Die ook de schaarse index zal gebruiken en alleen zal kijken naar die waar "b" is gedefinieerd.

Voor "arrays" dan "wees voorzichtig". Aangezien de waarde waarnaar wordt gekeken waarschijnlijk een van de bovenstaande is, tenzij u dit deed:

db.collection.insert({ "a": 1, "b": [[]] })

Waar is dit dan oké:

db.ab.find({ "a": 1, "b": { "$type": 4 } })

Maar zal de "sparse" index ook niet echt gebruiken om dezelfde redenen $exists werkt hier niet.

U moet dus begrijpen wat de termen hier betekenen en "op de juiste manier zoeken" om de indexdefinities te gebruiken die u maakt als u de maximale prestaties verwacht.

Dit zijn duidelijke voorbeelden die u zelf kunt testen en ziet dat de resultaten waar zijn. Ik zou willen dat de kerndocumentatie op deze punten duidelijker was, maar ik ben me er ook van bewust dat velen hebben geprobeerd een bijdrage te leveren (en uitstekende uitleg hebben gegeven), maar geen van deze is tot nu toe opgenomen.

Denk dat dat de reden is waarom je het hier vraagt.




  1. Is er een manier om automatisch een nieuw clusterknooppunt-IP te ontdekken in Redis Cluster met Lettuce?

  2. hoe op te lossen:'MongoError:authenticatie mislukt' @MongoDB Atlas

  3. Hoe een base64-afbeelding in reactie te tonen?

  4. Geef de voorwaardelijke grootte van een array weer met de andere velden van een mongodb-document