spring - 如何使用spring data mongodb mongotemplate插入嵌入文档

标签 spring mongodb spring-data-mongodb

我需要在现有的事件文档中插入一个新轨道,下面是我的类结构

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 将该轨道插入到我现有的文档中?

最佳答案

首先,您必须使用 @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);
}

关于spring - 如何使用spring data mongodb mongotemplate插入嵌入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802391/

相关文章:

node.js 在向 mongodb 中插入许多记录时静默停止

java - 如何使用java在mongoDB中保存和读取 map

python - MongoDB/PyMongo : Querying multiple criteria - unexpected results

java - mongodb-3.6.0 的 Spring 数据

java - Spring数据mongoRepository查询排序

spring - 如何在 Spring webapp 中的 JSP 中获取正确的当前 URL

java - 如何使用 AsyncRestTemplate 同时调用多个电话?

java - Spring PropertyPlaceholderConfigurer 破坏 Autowire

java - Spring Junit 不工作

spring-data-mongodb - MongoDB Spring Data Criteria Not运算符