sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga efter en lista i mongoengine; innehåller vs in

Strängfrågorna som normalt ligger under omslagen är alla regex-frågor så det skulle vara mindre effektivt. Undantaget är dock när man testar mot referensfält! Följande frågor är:

Model.objects.filter(refs__contains="5305c92956c02c3f391fcaba")._query
{'refs': ObjectId('5305c92956c02c3f391fcaba')}

Vilket är en direktuppslagning.

Model.objects.filter(refs__in=["5305c92956c02c3f391fcaba"])._query
{'refs': {'$in': [ObjectId('5305c92956c02c3f391fcaba')]}}

Detta är förmodligen mindre effektivt, men skulle förmodligen vara extremt marginellt. Den största effekten skulle vara antalet dokument och om refs är eller inte fältet har ett index.




  1. Skapa Spring Data Aggregation från MongoDb aggregeringsfråga

  2. Hur man använder mungo distinkt, hoppa över och begränsa tillsammans

  3. Ansluta en Redis-behållare med en annan behållare (Docker)

  4. Spring MongoDB process/tråd läcker