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")
답변
헤이 @Ankur
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
나는이 문제를 해결할 수 있기를 바랍니다, 파이썬 방법은 아래에 확인하시기 바랍니다.
문자열이나 json 형식으로 전달되는 데이터를 변환하고 있습니까? –
"json.dumps"를 사용하여 사전을 json으로 변환 중입니다. –
ok Thanks Buddy –
새로운 JSON 속성을 추가하려고합니다. a PATCH command을 보내는 REST 클라이언트 API 요청을 사용하여이를 수행 할 수 있습니다. 패치에 an insert
instruction을 사용하십시오.
당신은 문서의 루트 노드의 직계 자식으로 속성을 삽입 할 마지막 아이를 사용할 수 없음을 나타냅니다 Specifying Position in JSON의 메모를 참조하십시오. 그 전후에 대신 사용하십시오. 자세한 내용은 Limitations of JSON Path Expressions을 참조하십시오.
대신, 패치는 같이 보일 것입니다 : topProperty
는 업데이트 할 자바 스크립트 객체의 루트 노드의 일부인 JSON의 속성입니다
{
"insert": {
"context": "/topProperty",
"position": "after",
"content":
[
{
"default": "http://www.youtube.com/watch?vu003dhYB0mn5zh2c"
}
],
}
}
.
- retrieve the document
- 편집 내용 : 그 접근 방식은 문제가있는 경우 (안정적으로 사용할 수없는 topProperty가없는 경우, 예를 들어)
은 또한 일련의 작업을 할 수 update the document in the database
이 방법을 사용하면 작업하는 동안 다른 프로세스에서 문서를 업데이트 할 수있는 가능성이 있습니다 그 위에. 쓰기를 수행하는 다른 사람의 잠재적 결과에 따라 optimistic locking 또는 multi-statement transaction을 사용하여 문제를 해결할 수 있습니다.
나는 위의 코드를 파이썬으로 얻길 원한다. –
나는 https://github.com/marklogic/python_api에 대한 조언을 원한다. – grtjn
@grtjn 그 중 하나만 시도했지만 파이썬 3 만 지원하고 있으며 파이썬 2.7에서 작업 중이다. –