gpt4 book ai didi

Spring data MongoDB 将数组添加到现有文档

转载 作者:可可西里 更新时间:2023-11-01 09:48:28 24 4
gpt4 key购买 nike

假设我有以下收藏

    public @Data  class Customer {

@Id
private String id;

private String firstName;
private String lastName;

@DBRef
private List<Address> addressList= new ArrayList<Address>();
}

public @Data class  Address {

@Id
private String id;
private String address;
private String type;
private String customerID;
}

而且每个Customer都有多个地址,我实现了MongoRepository。第一次保存客户时 customerRepo.save(customerObject) 运行良好,在调用保存之前,我保留了多个地址对象,然后将它们设置为 addressList。下次当我更新同一个文档并想将一组新的地址添加到现有列表时,它会覆盖整个 addressList 数组。所以基本上我现在必须做的是像这样设置新地址将 addressList 数组切片后的过程不是一个好主意。我的问题是实现这种情况的最佳方法是什么?假设我不想使用 MongoTemplate。是否可以只使用 MongoRepository

最佳答案

我不认为你可以那样做。以前我也有同样的情况,我尝试了以下方法

1.org.springframework.core.convert.converter.Converter 即使我已经设法操纵了 DBObject 但功能类似于 $push$set(将它们包装在键下)在那里不起作用。

2.AbstractMongoEventListener 通过覆盖 onBeforeSave 但在保存期间未发生对象操作。

不过你可以尝试改变上面提到的

你可以尝试覆盖MongoRepository保存方法,如果有人指出正确的方向会更好。否则,对于我的场景,我必须创建与 MongoRepository(用于插入和检索数据/文档)并行工作的自定义存储库(更新和删除文档),但我认为这是一个丑陋的解决方法。必须有一种更清洁的方法来做到这一点。

关于Spring data MongoDB 将数组添加到现有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510093/

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