0

次のようなドキュメントがあります。

{
    "_id" : "1",
    "messages" : [ 
        {
            "_id" : "second",
            "conversationId" : "1",
            "timestamp" : ISODate("2015-03-01T20:16:30.991Z"),
            "text" : "cool text",
            "operatorId" : "operatorId",
            "clientId" : "clientId",
            "fromClient" : true
        }
    ]
}

テキスト値を「最もクールなテキスト」に変更する必要があります。私は Criteria api で Spring の MongoTemplate を使用しており、以下のコードを書きました

mongoOps.upsert(
                query(where("_id").is(message.getConversationId()))
                        .addCriteria(where("messages.$._id").is(message.getId())),
                new Update().set("text", message.getText()), ConversationDocument.class);

しかし、何も変わりませんでした。

mongoOps.findOne(query(where("_id").is(message.getConversationId())), ConversationDocument) は、変更したいドキュメントとまったく同じものを返します。

私は何を間違っていますか?

4

2 に答える 2