Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Mongo条件查询两次相同字段_Java_Spring_Mongodb_Mongodb Java - Fatal编程技术网

Java Spring Mongo条件查询两次相同字段

Java Spring Mongo条件查询两次相同字段,java,spring,mongodb,mongodb-java,Java,Spring,Mongodb,Mongodb Java,我正在尝试使用spring查询mongodb。我们有一个集合,其中包含一棵树和一个包含项列表的树路径(因此我们可以轻松地遍历树)。我们有一个查询,它需要返回特定节点的所有子节点。我们的查询基于选择路径中具有节点(父节点)且比父节点(级别)低一级的所有节点。我们的标准如下: Criteria.where("treePath").in(parentId).and("treePath").size(level) 唉,当我们在mongodb上调用它时,我们得到了以下异常: org.springfram

我正在尝试使用spring查询mongodb。我们有一个集合,其中包含一棵树和一个包含项列表的树路径(因此我们可以轻松地遍历树)。我们有一个查询,它需要返回特定节点的所有子节点。我们的查询基于选择路径中具有节点(父节点)且比父节点(级别)低一级的所有节点。我们的标准如下:

Criteria.where("treePath").in(parentId).and("treePath").size(level)
唉,当我们在mongodb上调用它时,我们得到了以下异常:

org.springframework.data.mongodb.InvalidMongoDbApiUsageException:到期 对于com.mongodb.BasicDBObject的限制,您不能添加 第二个“treePath”表达式指定为“treePath:{“$size”:2}”。 条件已包含“树路径:{“$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);
但这只会更新第一条记录,我需要它们全部更新


谢谢

这将满足您的要求:

int parentId = 100;
int level = 5;
Criteria c = new Criteria().andOperator(Criteria.where("treePath").is(parentId),  
                                        Criteria.where("treePath").size(level));
System.out.println(c.getCriteriaObject());
它打印

{ "$and" : [ { "treePath" : 100} , { "treePath" : { "$size" : 5}}]}

使用orOperator,您还可以查询同一字段的不同值,如果您需要这样做的话。