Możesz użyć $where
:
db.myCollection.find( { $where: "this.a1.a != this.a2.a" } )
Należy jednak pamiętać, że nie będzie to bardzo szybkie, ponieważ będzie musiało rozkręcić silnik skryptów java i wykonać iterację każdego dokumentu i sprawdzić stan każdego z nich.
Jeśli potrzebujesz wykonać to zapytanie dla dużych kolekcji lub bardzo często, najlepiej wprowadzić zdenormalizowaną flagę, taką jak areEqual
. Jednak takie pola o niskiej selektywności nie zapewniają dobrej wydajności indeksu, ponieważ zbiór kandydatów jest nadal duży.