1

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

我正在使用带有 HATEOAS 和 Mongodb 的 Spring data rest,当前实现用新数组替换旧数组,其中所需的功能是执行两个数组的联合并将该数组存储在 Mongodb 文档中。

虽然应该可以通过自定义实现来做到这一点,但 Spring 不会为实现生成 rest url,因此需要大量样板文件来满足相当小的需求。所有回应表示赞赏。

4

1 回答 1

2

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

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

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

假设c是您试图操纵的数组,这将添加foobar它。

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

于 2014-07-18T10:58:41.853 回答