gpt4 book ai didi

spring-data - 如何在Spring Data中使用MongoRepository进行$ push?

转载 作者:行者123 更新时间:2023-12-04 05:04:11 26 4
gpt4 key购买 nike

我有一个这样的MongoDB结构:

record = { 'field': 'value', 
'field2': 'value2',
'events' : [ { 'event1': 1 }, { 'event2' : 2 }]
}

我正在使用Spring Data MongoDB包访问此数据。主要将写入数据,因此我想使用 native 的“$ push”功能向“记录”中添加“事件”,但是我似乎无法弄清楚如何在不获取的情况下使用MongoRepository整个记录,然后推送并保存回去?

使用MongoRepository时,您实际上从未真正实现过。 Spring会根据注释或方法本身的名称处理所有内容

更新

正确的方法是在存储库上实现自定义方法,然后使用MongoTemplate手动进行吗?

例子:

FooRepository.java
public interface FooRepository extends
CrudRepository<Foo, ObjectId>,
AppointmentWarehouseRepositoryCustom {
}

FooRepositoryCustom.java
public interface AppointmentWarehouseRepositoryCustom {
public void pushMethod();
}

FooRepositoryImpl.java
public class FooRepositoryImpl implements
AppointmentWarehouseRepositoryCustom {

@Autowired
protected MongoTemplate mongoTemplate;

public void pushMethod() {
// Push methods here.
}
}

最佳答案

是的,您必须在存储库上实现自定义方法,并且push方法将如下所示:

public class FooRepositoryImpl implements
AppointmentWarehouseRepositoryCustom {

@Autowired
protected MongoTemplate mongoTemplate;

public void pushMethod(String objectId, Object... events) {
mongoTemplate.updateFirst(
Query.query(Criteria.where("id").is(objectId)),
new Update().pushAll("events", events), Foo.class);
}
}

关于spring-data - 如何在Spring Data中使用MongoRepository进行$ push?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14247573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com