gpt4 book ai didi

mongodb - 如何更新数组中与 spring 数据中的条件匹配的嵌套对象 - mongodb?

转载 作者:可可西里 更新时间:2023-11-01 09:58:12 28 4
gpt4 key购买 nike

我在 mongodb 中有一个从这个 java 模型创建的文档:

class Comment 
{
String pollID;
List<CommentDetail> commentDetailList;
}

class CommentDetailList
{
String text;
User user;
}

class User
{
String userID;
String username;
}

因此,我的文档将如下所示:

{
"pollID":"ABCDEFG",
"commentDetailList":
[
{
"text":"Hello Comment1",
"user":
{
"userID":"001",
"username": "username1"
}
},
{
"text":"Hello Comment2",
"user":
{
"userID":"001",
"username": "username1"
}
},
{
"text":"Hello Comment3",
"user":
{
"userID":"002",
"username": "username2"
}
}
]
}

现在我想使用以下代码更新 userID = 001 的用户的用户名:

Query query = new Query(Criteria.where("pollID").is("ABCDEFG")
.and("commentDetailList")
.elemMatch(Criteria.where("user.userID").is("001")));

Update update = new Update().set("commentDetailList.$.user.username", username);

WriteResult wr = mongoTemplate.updateMulti(query, update, "comment");

问题是它只更新第一条评论(评论文本 = "Hello Comment1")。

有人能帮帮我吗?

我对更新功能有误解吗?

谢谢。

附言。对不起我的英语:D

最佳答案

试试这个查询:

Query query = new Query(new Criteria().andOperator(
Criteria.where("pollID").is("ABCDEFG"),
Criteria.where("commentDetailList").elemMatch(Criteria.where("user.userID").is("001"))
));

关于mongodb - 如何更新数组中与 spring 数据中的条件匹配的嵌套对象 - mongodb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066393/

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