MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Abfragen einer Liste in Mongoengine; enthält vs

Die Zeichenfolgenabfragen, die normalerweise unter der Decke liegen, sind alle Regex-Abfragen und wären daher weniger effizient. Ausnahme ist jedoch das Testen gegen Referenzfelder! Die folgenden Abfragen sind:

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

Das ist eine direkte Suche.

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

Dies ist wahrscheinlich weniger effizient, wäre aber wahrscheinlich äußerst marginal. Die größte Auswirkung wäre die Anzahl der Dokumente und ob die refs Feld hat einen Index.