$where
を使用できます :
db.myCollection.find( { $where: "this.a1.a != this.a2.a" } )
ただし、これはそれほど高速ではないことに注意してください。これは、JavaScriptエンジンを起動し、すべてのドキュメントを反復処理して、それぞれの状態を確認する必要があるためです。
大規模なコレクションに対してこのクエリを実行する必要がある場合、または非常に頻繁に、areEqual
のような非正規化フラグを導入するのが最善です。 。それでも、候補セットがまだ大きいため、このような選択性の低いフィールドでは、優れたインデックスパフォーマンスが得られません。