次のようなドキュメントがあります。
{
"_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) は、変更したいドキュメントとまったく同じものを返します。
私は何を間違っていますか?