在 PATCH 请求期间更新数组值时,有没有办法告诉 MongoRepository 实现 $addToSet?
我正在使用带有 HATEOAS 和 Mongodb 的 Spring data rest,当前实现用新数组替换旧数组,其中所需的功能是执行两个数组的联合并将该数组存储在 Mongodb 文档中。
虽然应该可以通过自定义实现来做到这一点,但 Spring 不会为实现生成 rest url,因此需要大量样板文件来满足相当小的需求。所有回应表示赞赏。
在 PATCH 请求期间更新数组值时,有没有办法告诉 MongoRepository 实现 $addToSet?
我正在使用带有 HATEOAS 和 Mongodb 的 Spring data rest,当前实现用新数组替换旧数组,其中所需的功能是执行两个数组的联合并将该数组存储在 Mongodb 文档中。
虽然应该可以通过自定义实现来做到这一点,但 Spring 不会为实现生成 rest url,因此需要大量样板文件来满足相当小的需求。所有回应表示赞赏。
Spring Data REST 构建在域对象和存储库抽象之上。因此,让它与商店特定的实现一起工作超出了它的范围。我假设您的核心目标是将 PATCH 请求应用于您的域实例,而这$addToSet
只是实现这一目标的手段。
从 Spring Data REST 的 2.2 M1 版本开始,我们在 PATCH 请求上支持JSON Patch 媒体类型。因此,您可以将以下文档发送到服务器:
[{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] }]
假设c
是您试图操纵的数组,这将添加foo
到bar
它。
另一个更激进的选择是实际部署手动实现的控制器并将其挂接到 URI 空间中的正确位置以手动与存储库交互。