如何使用 spring 数据从 MongoDB 列表中 add/remove 元素?

How to add/remove elements from a MongoDB list using spring data?

我正在使用 spring 数据与 mongo 通信(尽管我知道在高级用例中 mongo 驱动程序有一些缺点)。我的应用程序有一个 mongodb 文档,其中一个元素是一个列表。现在我想从文件列表中 add/delete 特定元素。 有人可以告诉我 spring 数据是否以及如何支持它(考虑到它的基本操作)吗?

我做了很多网络搜索,但似乎没有找到任何具体的东西。

任何帮助将不胜感激。

更新 1: 示例文档:

{ id: 123, arr: [ 1,2,3,4]}

更新后

{ id: 123, arr: [ 1,2,3]}{ id: 123, arr: [ 1,2,3,4,5]}

您必须创建一个服务来处理此操作。

假设您正在使用 Springs Repository 接口之一,您的服务可以从数据库中提取您需要更新的对象,然后您只需在每个对象上调用 .save()。

Object o = repository.findById(someId);
o.setList(new ArrayList());
repository.save(o);

另一种选择是使用 Spring 数据公开的 mongoOperation:

http://www.mkyong.com/mongodb/spring-data-mongodb-update-document/

如果您尝试更新多个文档,这可能会有所帮助。

我正在查看单元测试,看起来您可以使用 mongo $pull 和 $push 方法使用 Update class .

https://github.com/spring-projects/spring-data-mongodb/blob/master/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java

您可以在此处查看教程:

http://www.dineshonjava.com/2013/01/spring-data-mongodb-update-document.html#.VVexP3UVhBc

所以你会做类似的事情:

Update().pull("arr", 4);
Update().push("arr", 5);