Verifique los documentos que probablemente usará $ o como operador de canalización, pero no existe tal operador:DOC
En su lugar, puede construir un operador $match que está dentro y puede contener una cláusula o
Algo como esto en shell:
db.collection.aggregate({$match:{$or:[{someKey:'someValue'},{someOtherKey:'someOtherValue'}]}})
Lo que tienes que cambiar es algo como esto en JAVA:
Cambia esto:
DBObject matchCriteria = new BasicDBObject("$or", or);
A esto:
DBObject orCriteria = new BasicDBObject("$or", or);
DBObject matchCriteria = new BasicDBObject("$match", orCriteria);