Je zou $where
. kunnen gebruiken :
db.myCollection.find( { $where: "this.a1.a != this.a2.a" } )
Houd er echter rekening mee dat dit niet erg snel zal zijn, omdat het de javascript-engine moet starten en elk document moet herhalen en de voorwaarde voor elk document moet controleren.
Als u deze query moet uitvoeren voor grote verzamelingen, of heel vaak, kunt u het beste een gedenormaliseerde vlag invoeren, zoals areEqual
. Toch leveren dergelijke velden met een lage selectiviteit geen goede indexprestaties op, omdat de kandidatenset nog steeds groot is.