Da Sie bereits einen zusammengesetzten Index für (a, b)
erstellen , werden alle Ihre Klauselausdrücke von Indizes unterstützt -> Mongo verwendet einen Index-Scan anstelle eines Sammlungs-Scans. Wahrscheinlich schnell genug.
Referenz:$or Klauseln und Indizes
Nun zu Ihrer Frage
$in
mit dem gesamten Feld übereinstimmen. Wenn Sie (a,b)
abgleichen möchten dann offensichtlich (a,b)
muss ein eingebettetes Objekt werden, um mit $in
suchen zu können .
Nicht sicher, ob das Erstellen eines eingebetteten Objekts zu Ihrem aktuellen Schema / Ihren aktuellen Anforderungen passt. Aber wenn es der Fall ist, $in
ist für eine bessere Leistung im Vergleich zu $or
bekannt
:
In diesem Fall, wenn Sie ein eingebettetes Objekt haben wie:{e: {a: 'x', b: 'y'}}
dann db.collections.createIndex({e: 1})
gepaart mit $in
wird die Dinge beschleunigen