用于PATCH请求的数组更新的$ addToSet实现

时间:2014-07-17 22:38:53

标签: mongodb spring-data spring-data-rest spring-hateoas

在PATCH请求期间更新数组值时,有没有办法告诉MongoRepository实现$ addToSet?

我正在使用Spring数据休息与HATEOAS和Mongodb,并且当前实现用新数组替换旧数组,其中所需的功能是执行两个数组的并集并将该数组存储在Mongodb文档中。 / p>

虽然应该可以通过自定义实现来实现,但Spring不会为实现生成一个休息URL,因此需要大量的样板来满足相当小的要求。所有答复都赞赏

1 个答案:

答案 0 :(得分:2)

Spring Data REST构建于域对象和存储库抽象之上。因此,让它与特定于商店的实现一起使用超出了它的范围。我假设您的核心目标是将PATCH请求应用于您的域实例,而$addToSet只是实现此目的的手段。

从Spring Data REST的2.2版M1开始,我们在PATCH请求上支持JSON Patch media type。因此,您可以将以下文档发送到服务器:

[{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] }]

假设c是您尝试操作的数组,则会向其添加foobar

另一个 - 更激进的选择是实际部署一个手动实现的控制器并将其挂钩到URI空间中的正确位置,以手动与存储库进行交互。