在PATCH请求期间更新数组值时,有没有办法告诉MongoRepository实现$ addToSet?
我正在使用Spring数据休息与HATEOAS和Mongodb,并且当前实现用新数组替换旧数组,其中所需的功能是执行两个数组的并集并将该数组存储在Mongodb文档中。 / p>
虽然应该可以通过自定义实现来实现,但Spring不会为实现生成一个休息URL,因此需要大量的样板来满足相当小的要求。所有答复都赞赏
答案 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
是您尝试操作的数组,则会向其添加foo
和bar
。
另一个 - 更激进的选择是实际部署一个手动实现的控制器并将其挂钩到URI空间中的正确位置,以手动与存储库进行交互。