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

Mongo $in mit zusammengesetztem Index

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