我需要在现有的事件文档中插入一个新的轨道以下是我的类结构
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 data mongodb将该轨道插入现有文档?
答案 0 :(得分:5)
首先,您必须使用Event
注释@Document
课程:
@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);
}