java—从spring引导应用程序中的mongodb文档中删除引用字段

vfhzx4xs  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(372)

我有mongodb数据库atlas中的文档(如下所示),其中包含spring引导应用程序。当我删除下面显示的文档所引用的文档(seller)时,seller reference字段也不会被删除,从而使seller字段引用不存在的文档。

_id: "Q8rWjRVCx4Avu3lvp0D6OuExac23SD"
editable: true
totalAmount: 0
amountPaid: 0
seller: DBRef(employees, BR1pKUGjZU8xdqIlaNvtO9VhqPqmi8, undefined)
_class: com.examle.Transaction

如何使用spring引导操作从文档中删除引用的字段(seller)。我认为可以使用$unset操作符,但是,这是mongodb特定的命令,而我想从spring引导应用程序执行此操作。这与处理原始数据类型的问题不同,而我的问题是关于引用的。

az31mfrm

az31mfrm1#

两种可能的解决方案:
即使删除了引用的卖方文档,也要保持文档的原样。mongodb清除指向不存在文档的引用。根据我的经验,在对文档执行操作(例如更新或查询操作)时会发生这种情况。此外,即使在清除引用之前查询数据库,返回值也是空的,而不是空值。
第二个选项是使用$unset操作符,如下所示。

query.addCriteria(Criteria.where("seller").is(<seller id>));
Update update = new Update();
update.unset("seller");
mongoTemplate.updateMulti(query, update, Transaction.class);

注意使用seller id表示查询中引用的值。

相关问题