Fan*_* Li 4 json marklogic json-patch
MarkLogic PATCH API 使用的JSON 补丁规范与 JSON-Path 标准 ( RFC 6902 )非常相似,但并不完全相同。例如,将节点添加到以下文档:
{
"parent": {
"child1": "c1-value",
"child2": "c2-value"
}
}
Run Code Online (Sandbox Code Playgroud)
MarkLogic 补丁:
{
"insert": {
"context": "/parent",
"position": "last-child",
"content": { "child3": "c3-value" }
}
}
Run Code Online (Sandbox Code Playgroud)
JSON-Patch 标准:
{
"op": "add",
"path": "/parent/child3",
"value": "c3-value"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法自动将 JSON-Patch 翻译成 MarkLogic Patch?我的想法是利用诸如json-patch-gen自动生成 JSON-Patch 操作并将它们转换为 MarkLogic Patch 之类的库来更新 MarkLogic 中的文档。
或者,是否有一个 JavaScript 库可用于通过区分两个 JavaScript 对象来自动生成 MarkLogic 补丁?
虽然 RFC 影响了 MarkLogic 补丁规范,但 RFC 的一些规定与 MarkLogic 不匹配。
JSON 指针与基于 JSON 的 MarkLogic XPaths 具有不同的选择语义,例如选择容器数组节点而不是项目节点。(另外,如果我没记错的话,JSON Pointer 不支持 XPath 谓词。)
MarkLogic 中的补丁操作必须是不相关的并且可以按任何顺序适用,而 JSON Patch 需要顺序转换。如RFC中所述:
序列中的每个操作都应用于目标文档;生成的文档成为下一个操作的目标。
RFC 不支持在用户定义的服务器端代码中实现插入或替换操作。
JSON 和 XML 的 MarkLogic 补丁规范必须一致。
可以将用 JSON Patch RFC 语法子集表示的补丁转换为使用 MarkLogic 补丁功能子集的 MarkLogic 补丁规范。
然而,这种最小公分母方法会增加成本,为错误创造机会,并放弃 MarkLogic 的某些功能。
除非对其他数据存储中的内容应用相同的补丁,否则要求转换可能没有太大好处。
希望有用,
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |