Vous pouvez utiliser $where
:
db.myCollection.find( { $where: "this.a1.a != this.a2.a" } )
Cependant, sachez que cela ne sera pas très rapide, car il faudra faire tourner le moteur de script java et itérer chaque document et vérifier la condition pour chacun.
Si vous devez effectuer cette requête pour de grandes collections, ou très souvent, il est préférable d'introduire un indicateur dénormalisé, comme areEqual
. Pourtant, ces champs à faible sélectivité ne donnent pas de bonnes performances d'index, car l'ensemble de candidats est encore grand.