Можете да използвате $where
:
db.myCollection.find( { $where: "this.a1.a != this.a2.a" } )
Имайте предвид обаче, че това няма да е много бързо, защото ще трябва да завърти двигателя на java скриптове и да повтори всеки документ и да провери условието за всеки.
Ако трябва да направите тази заявка за големи колекции или много често, най-добре е да въведете денормализиран флаг, като areEqual
. И все пак такива полета с ниска селективност не дават добра производителност на индекса, тъй като наборът от кандидати все още е голям.