Ich versuche, Mongodb mit Feder abzufragen. Wir haben eine Sammlung, die einen Baum enthält und eine Liste von Elementen als Baumpfad enthält (damit wir den Baum leicht durchqueren können). Wir haben eine Abfrage, die alle untergeordneten Knoten eines bestimmten Knotens zurückgeben muss. Unsere Abfrage basiert auf der Auswahl aller Knoten, die den Knoten (Eltern) im Pfad haben und eine Ebene niedriger als die Elternebene (Ebene) sind. Unsere Kriterien sind wie folgt:Spring Mongo-Kriterien Abfrage zweimal das gleiche Feld
Criteria.where("treePath").in(parentId).and("treePath").size(level)
Ach, wenn wir dies auf mongodb nennen bekommen wir die folgende Ausnahme:
org.springframework.data.mongodb.InvalidMongoDbApiUsageException: Wegen der Beschränkungen des com .mongodb.BasicDBObject, Sie können keinen zweiten Ausdruck 'treePath' hinzufügen, der als 'treePath: {"$ size": 2} angegeben wurde. Die Kriterien enthalten bereits 'treePath: {"$ in": [ "50137df5f49f9b4a6481d639"]}'.
Gibt es weitere Vorschläge, wie Sie dasselbe erreichen können? Eine Option, an die ich dachte, war, mongodb direkt abzufragen. Ich versuchte
String command = "{findAndModify:\"Task\",query:{$and:[{treePath:\"5013a79a36600872ecf4dba8\"},{treePath:{$size:2}},{order:{$gte:0}}]},update:{$inc:{order:1}}}";
CommandResult commandResult = mongoTemplate.executeCommand(command);
Aber das wird nur den ersten Datensatz aktualisieren und ich brauche sie alle aktualisiert.
Danke!
Dank! hat super funktioniert! – checklist
Mit orOperator können Sie auch nach anderen Werten des gleichen Felds suchen, wenn dies erforderlich ist. – hypercube