我有这样的文件:
{
"_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) 返回我想要更改的完全相同的文档。
我究竟做错了什么?