MarkLogic node.js-使用versionId以外的字段进行条件更新

MarkLogic node.js-使用versionId以外的字段进行条件更新,marklogic,Marklogic,我正在使用ML8和Node.js。这里的文档描述了如何使用versionId字段在ML中进行条件更新 但例如,如果我想在不同的字段上执行条件更新,是否可能 我的场景是:我有JSON文档,其中包含元素assignedTo和assignDate(其中,每次将新值设置为assignedTo时,assignDate都设置为当前日期) 现在,对于我的“Assign”操作,我希望确保在我阅读文档和执行更新之间没有其他人更改assignedTo/assignDate字段。我不在乎同一文档中的其他字段是否已更新

我正在使用ML8和Node.js。这里的文档描述了如何使用versionId字段在ML中进行条件更新

但例如,如果我想在不同的字段上执行条件更新,是否可能

我的场景是:我有JSON文档,其中包含元素assignedTo和assignDate(其中,每次将新值设置为assignedTo时,assignDate都设置为当前日期)

现在,对于我的“Assign”操作,我希望确保在我阅读文档和执行更新之间没有其他人更改assignedTo/assignDate字段。我不在乎同一文档中的其他字段是否已更新-如果其他字段已更新,我仍然可以继续分配操作(因此我不能使用versionId方法,因为这涵盖了整个文档)


如何做到这一点?

乐观锁定不会查看文档的内容。相反,版本id是反映文档上时间戳的系统值。检查时间戳比读取文档内容更有效

您可以编写一个POST资源服务扩展

  • 接收更新内容
  • 读取文档并检查assignTo/assignDate是否未更改
  • 文档根目录上的xdmp:node-replace()是否包含更新内容

希望这能有所帮助,乐观锁定不会查看文档的内容。相反,版本id是反映文档上时间戳的系统值。检查时间戳比读取文档内容更有效

您可以编写一个POST资源服务扩展

  • 接收更新内容
  • 读取文档并检查assignTo/assignDate是否未更改
  • 文档根目录上的xdmp:node-replace()是否包含更新内容

希望这能有所帮助,

我是否应该将此理解为仅使用节点API无法完成我想要的操作?是的,这就是答案试图确认的内容。我是否应该将此理解为仅使用节点API无法完成我想要的操作?是的,这就是答案试图确认的内容。