Controlla i documenti che probabilmente utilizzerai $ o come operatore di pipeline, ma non esiste un tale operatore:DOC
Invece puoi costruire un $match operatore che è all'interno può contenere una clausola or
Qualcosa del genere in shell:
db.collection.aggregate({$match:{$or:[{someKey:'someValue'},{someOtherKey:'someOtherValue'}]}})
Quello che devi cambiare è qualcosa del genere in JAVA:
Cambia questo:
DBObject matchCriteria = new BasicDBObject("$or", or);
A questo:
DBObject orCriteria = new BasicDBObject("$or", or);
DBObject matchCriteria = new BasicDBObject("$match", orCriteria);