我正在尝试使用XQuery更新xDB中某些属性的值,这是我的事务:
let $source := doc('/historicalresource')/HistoricalResourceData[id/@UUID = '0361513e-30fa-45e4-a73a-d05870b8a284']
let $res := $source/ResourceProperty[@PropertyName="cpu|limit"]/@PropertyValue
let $change := '21572'
return replace value of node $res with $change
运行此查询后,我收到了这样的错误:
com.xhive.error.XhiveException:VERSION_ACCESS_DENIED:本文档 版本化,只能通过版本控制操作进行更改
事实上在我的情况下historicalresource
是一个文件夹,可能包含多个文档,而且它们都有一个版本,例如:v1.1,v1.2等。
如何使用xquery更新上一版本的值? 我应该如何修改我的查询以便能够更新所需的值?
答案 0 :(得分:0)
最后,我找到了问题的答案,因此在此处添加:
没有办法使用xQuery更新xDB文件,因为它是基于版本的系统,xQuery无法创建新版本,但它可以通过某种编码语言手动或自动完成(例如:java):
答案 1 :(得分:0)
对于版本化文档(调用了XhiveLibraryChildIf.makeVersionable()
),情况确实如此:您必须先检出文档,然后在签出的副本上运行更新查询,最后检查新版本但是,对于非版本化文档,您可以直接应用更新查询。