У меня есть такой документ:
{
"_id" : "1",
"messages" : [
{
"_id" : "second",
"conversationId" : "1",
"timestamp" : ISODate("2015-03-01T20:16:30.991Z"),
"text" : "cool text",
"operatorId" : "operatorId",
"clientId" : "clientId",
"fromClient" : true
}
]
}
и я должен изменить текстовое значение на «самый крутой текст». Я использую MongoTemplate Spring с Criteria API и написал код ниже
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) возвращает точно такой же документ, который я хочу изменить.
Что я делаю не так?