gpt4 book ai didi

java - Spring Mongo 条件查询两次相同的字段

转载 作者:IT老高 更新时间:2023-10-28 13:09:11 24 4
gpt4 key购买 nike

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

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

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

org.springframework.data.mongodb.InvalidMongoDbApiUsageException: Due to limitations of the com.mongodb.BasicDBObject, you can't add a second 'treePath' expression specified as 'treePath : { "$size" : 2}'. Criteria already contains '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}}]}

关于java - Spring Mongo 条件查询两次相同的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com