MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consultando uma lista no mongoengine; contém vs em


As consultas de string normalmente ocultas são todas consultas regex, portanto, seriam menos eficientes. No entanto, a exceção é ao testar em campos de referência! As seguintes consultas são:
Model.objects.filter(refs__contains="5305c92956c02c3f391fcaba")._query
{'refs': ObjectId('5305c92956c02c3f391fcaba')}

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

Isso provavelmente é menos eficiente, mas provavelmente seria extremamente marginal. O maior impacto seria o número de documentos e se as refs campo tem um índice.