sql >> Base de Datos >  >> NoSQL >> MongoDB

Consultar una lista en mongoengine; contiene vs en

Las consultas de cadena normalmente debajo de las cubiertas son todas consultas de expresiones regulares, por lo que serían menos eficientes. Sin embargo, la excepción es cuando se prueba contra campos de referencia. Las siguientes consultas son:

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

Que es una búsqueda directa.

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

Esto probablemente sea menos eficiente, pero probablemente sería extremadamente marginal. El mayor impacto sería la cantidad de documentos y si las refs el campo tiene un índice.