繁体   English   中英

Spring Mongo标准查询两次相同的字段

[英]Spring Mongo criteria querying twice the same field

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

Criteria.where("treePath").in(parentId).and("treePath").size(level)

唉,当我们在mongodb上调用它时,我们得到以下异常:

org.springframework.data.mongodb.InvalidMongoDbApiUsageException:由于com.mongodb.BasicDBObject的限制,您无法添加第二个'treePath'表达式,指定为'treePath:{“$ size”:2}'。 Criteria已经包含'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);

但这只会更新第一条记录,我需要更新它们。

谢谢!

这将做你想要的:

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}}]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM