繁体   English   中英

如何使用Spring Data MongoDB的MongoTemplate部分更新嵌入式文档?

[英]How can I partially update an embedded document using Spring Data MongoDB's MongoTemplate?

请有人告诉我如何更新嵌入文档中的记录吗? 这是我的文档结构:

{
  "_id":"1000",
  "event_name":"Some name",  
  "tracks":
   [
     {
         "id" : "100"
         "title" : "Test title",
     },
     {
         "id" : "101",
         "title" : "Test title 2",
     }
  ]
}

我想更新ID为101.相关曲目的标题我的问题,因为

我可以使用以下代码来解决我的问题

MongoConverter converter = mongoTemplate.getConverter();

DBObject newTrackRec = (DBObject)converter.convertToMongoType(track);

Query query = Query.query(Criteria.where("_id").is(track.getEventId()).and("tracks._id").is(track.getId()));

Update update = new Update().set("tracks.$", newTrackRec);

mongoTemplate.updateFirst(query, update, Event.class);

您基本上可以遵循MongoDB参考文档的说明 ,并将其转换为Spring Data MongoDB查询和更新API:

import static org.springframework.data.mongodb.core.query.Query.*;
import static org.springframework.data.mongodb.core.query.Criteria.*;

Track track = …;
String title = …;

Query query = query(
  where("id").is(track.getEventId()).
  and("tracks.id").is(track.getId()));

Update update = new Update().set("tracks.$.title", title);

mongoTemplate.updateFirst(query, update, Event.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM