我想使用 Python 在 MarkLogic 中操作文件
I want to manipulate the file in MarkLogic using Python
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")
您想要添加一个新的 JSON 属性。您可以使用 REST 客户端 API 请求,在补丁中发送 a PATCH command. Use an insert
instruction 来做到这一点。
见Specifying Position in JSON中的注释,表示
You cannot use last-child to insert a property as an immediate child of the root node of a document. Use before or after instead. For details, see Limitations of JSON Path Expressions.
相反,您的补丁将类似于:
{
"insert": {
"context": "/topProperty",
"position": "after",
"content":
[
{
"default": "http://www.youtube.com/watch?vu003dhYB0mn5zh2c"
}
],
}
}
其中 topProperty
是一个 JSON 属性,它是您要更新的 JavaScript 对象的根节点的一部分。
如果该方法有问题(例如,如果没有可靠可用的 topProperty),您还可以执行一系列操作:
- retrieve the document
- 编辑Python中的内容
- update the document in the database
使用这种方法,其他进程可能会在您处理文档时更新文档。您可以依靠 optimistic locking or a multi-statement transaction 来解决这个问题,具体取决于其他人进行写入的潜在后果。
嘿@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
希望能解决您的问题
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")
您想要添加一个新的 JSON 属性。您可以使用 REST 客户端 API 请求,在补丁中发送 a PATCH command. Use an insert
instruction 来做到这一点。
见Specifying Position in JSON中的注释,表示
You cannot use last-child to insert a property as an immediate child of the root node of a document. Use before or after instead. For details, see Limitations of JSON Path Expressions.
相反,您的补丁将类似于:
{
"insert": {
"context": "/topProperty",
"position": "after",
"content":
[
{
"default": "http://www.youtube.com/watch?vu003dhYB0mn5zh2c"
}
],
}
}
其中 topProperty
是一个 JSON 属性,它是您要更新的 JavaScript 对象的根节点的一部分。
如果该方法有问题(例如,如果没有可靠可用的 topProperty),您还可以执行一系列操作:
- retrieve the document
- 编辑Python中的内容
- update the document in the database
使用这种方法,其他进程可能会在您处理文档时更新文档。您可以依靠 optimistic locking or a multi-statement transaction 来解决这个问题,具体取决于其他人进行写入的潜在后果。
嘿@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
希望能解决您的问题