4

この Java モデルから作成された mongodb にドキュメントがあります。

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" のコメント) のみを更新することです。

誰か助けてくれませんか?

アップデート機能を誤解していませんか?

どうも。

PS。私の英語でごめんなさい:D

4

1 に答える 1