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

Interrogazione di una lista in mongoengine; contiene vs in

Le query di stringa normalmente sotto le coperte sono tutte query regex, quindi sarebbero meno efficienti. Tuttavia, l'eccezione è quando si testano i campi di riferimento! Le seguenti query sono:

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

Che è una ricerca diretta.

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

Questo probabilmente è meno efficiente, ma sarebbe probabilmente estremamente marginale. L'impatto maggiore sarebbe il numero di documenti e se i refs o meno il campo ha un indice.