Estoy intentando consultar mongodb usando spring. Tenemos una colección que contiene un árbol y una lista de elementos como una ruta de árbol (para que podamos atravesar fácilmente el árbol). Tenemos una consulta que debe devolver todos los nodos secundarios de un nodo específico. Nuestra consulta se basa en seleccionar todos los nodos que tienen el nodo (principal) en la ruta y son un nivel más bajo que el principal (nivel). Nuestro criterio es el siguiente:Criterios de Spring Mongo que consultan dos veces el mismo campo
Criteria.where("treePath").in(parentId).and("treePath").size(level)
Por desgracia, cuando llamamos a esto en mongodb obtenemos la siguiente excepción:
org.springframework.data.mongodb.InvalidMongoDbApiUsageException: Debido a las limitaciones de la com .mongodb.BasicDBObject, no puede agregar una segunda expresión 'treePath' especificada como 'treePath: {"$ size": 2}'. Los criterios ya contienen 'treePath: {"$ in": [ "50137df5f49f9b4a6481d639"]}'.
¿Hay otras sugerencias sobre cómo lograr lo mismo? Una opción en la que estaba pensando era consultar mongodb directamente. Intenté
String command = "{findAndModify:\"Task\",query:{$and:[{treePath:\"5013a79a36600872ecf4dba8\"},{treePath:{$size:2}},{order:{$gte:0}}]},update:{$inc:{order:1}}}";
CommandResult commandResult = mongoTemplate.executeCommand(command);
Pero esto solo actualizará el primer registro y los necesito todos actualizados.
Gracias!
gracias! funcionó muy bien! – checklist
Usando orOperator, también puede consultar diferentes valores del mismo campo, si eso es lo que necesita hacer. – hypercube