What is the best way to return all documents in a collection if I want document.a == document.b?
I\'ve tried
db.collection.aggregate([ { $match: { $
Basically, you are trying to perform a self join. An operation not supported by MongoDB.
Concerning the $eq
operator, as you guessed:
I don't know any other way to perform what you need than using an extra $project
step as you suggested.
Please note this is not significantly more expensive as, anyway, your query cannot use any index and MongoDB will do a full scan.
If I understood your question right you want those documents that have same values in field1 and field2.
For this try
db.coll.find({$where: function() { return this.field1 == this.field2 } } );
or more compact
db.coll.find({ $where : "this.field1 == this.field2" } );