我正在尝试使用spring查询mongodb。我们有一个集合,其中包含一棵树和一个包含项目列表作为树路径(因此我们可以轻松地遍历树)。我们有一个查询需要返回特定节点的所有子节点。我们的查询基于选择路径中具有节点(父级)并且比父级(级别)低一级的所有节点。我们的标准如下:
Criteria.where("treePath").in(parentId).and("treePath").size(level)
唉,当我们在 mongodb 上调用它时,我们得到以下异常:
org.springframework.data.mongodb.InvalidMongoDbApiUsageException:由于 com.mongodb.BasicDBObject 的限制,您无法添加指定为“treePath:{“$size”:2}”的第二个“treePath”表达式。条件已经包含 'treePath : { "$in" : [ "50137df5f49f9b4a6481d639"]}'。
关于如何实现同样的目标还有其他建议吗?我正在考虑的一种选择是直接查询 mongodb。我试过
String command = "{findAndModify:\"Task\",query:{$and:[{treePath:\"5013a79a36600872ecf4dba8\"},{treePath:{$size:2}},{order:{$gte:0}}]},update:{$inc:{order:1}}}";
CommandResult commandResult = mongoTemplate.executeCommand(command);
但这只会更新第一条记录,我需要全部更新。
谢谢!