繁体   English   中英

如何使用Spring Data MongoDB 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.

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