Podrías usar $where
:
db.myCollection.find( { $where: "this.a1.a != this.a2.a" } )
Sin embargo, tenga en cuenta que esto no será muy rápido, ya que tendrá que activar el motor de secuencias de comandos Java e iterar todos y cada uno de los documentos y verificar la condición de cada uno.
Si necesita realizar esta consulta para colecciones grandes, o con mucha frecuencia, es mejor introducir un indicador desnormalizado, como areEqual
. Aun así, estos campos de baja selectividad no generan un buen rendimiento del índice, porque el conjunto de candidatos sigue siendo grande.