declareUpdate();
//get Docs
myDoc = cts.doc("/heal/scripts/Test.json").toObject();
//add Data
myDoc.prescribedPlayer =
[
{
"default": "http://www.youtube.com/watch?vu003dhYB0mn5zh2c"
}
]
//persist
xdmp.documentInsert("/heal/scripts/Test.json",myDoc,null,"scripts")
答案 0 :(得分:2)
您正在寻找添加新的JSON属性。您可以使用REST客户端API请求执行此操作,发送a PATCH command。在补丁中使用an insert
instruction。
请参阅Specifying Position in JSON中的说明,其中表示
您不能使用last-child将属性作为文档根节点的直接子节点插入。改为使用之前或之后。有关详细信息,请参阅Limitations of JSON Path Expressions。
相反,您的补丁看起来像:
{
"insert": {
"context": "/topProperty",
"position": "after",
"content":
[
{
"default": "http://www.youtube.com/watch?vu003dhYB0mn5zh2c"
}
],
}
}
其中topProperty
是一个JSON属性,它是要更新的JavaScript对象的根节点的一部分。
如果这种方法存在问题(例如,如果没有可靠的topProperty),您还可以执行一系列操作:
使用这种方法,某些其他进程可能会在您处理文档时更新文档。您可以依靠optimistic locking或multi-statement transaction来解决这个问题,具体取决于其他人写作的潜在后果。
答案 1 :(得分:1)
嘿@Ankur请查看下面的python方法,
def PartialUpdateData(self,filename, content, context):
self.querystring = {"uri": "/" + self.collection + "/" + filename}
url = self.baseUri
self.header = {'Content-Type': "application/json"}
mydata = {
"patch":[{ "insert": {
"context": context,
"position": "before",
"content": content
}}]}
resp = requests.patch(url + "/documents", data=json.dumps(mydata),
headers=self.header, auth=self.auth, params=self.querystring)
return resp.content
我希望这可以解决你的问题。