[英]How can I partially update an embedded document using Spring Data MongoDB's MongoTemplate?
[英]how to insert embedded document using spring data mongodb mongotemplate
我需要在现有事件文档中插入一条新轨道,这是我的类结构
class Event
{
String _id;
List<Track> tracks;
}
class Track
{
String _id;
String title;
}
我现有的文件是
{
"_id":"1000",
"event_name":"Some Name"
}
插入后文档将看起来像
{
"_id":"1000",
"event_name":"Some name",
"tracks":
[
{
"title":"Test titile",
}
]
}
如何使用mongoTemplate spring数据mongodb将该轨道插入到现有文档中?
首先,您必须使用@Document
注释Event
类:
@Document(collection = "events")
public class Event
{
// rest of code
}
添加事件的代码应如下所示:
@Repository
public class EventsDao {
@Autowired
MongoOperations template;
public void addTrack(Track t) {
Event e = template.findOne
(new Query(Criteria.where("id").is("1000")), Event.class);
if (e != null) {
e.getTracks().add(t);
template.save(e);
}
}
}
注意 :您应该更改Event
的类String _id;
到String id;
为了使此示例正常工作(或更改查询文字)。
编辑更新曲目也相当容易。 假设您要更改第一首曲目的标题:
Event e = template.findOne(new Query(Criteria.where("_id").is("1000")), Event.class);
if (e != null) {
e.getTracks().get(0).setTitle("when i'm 64");
template.save(e);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.