2017-03-22 25 views
2
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

私はPythonで上記のコードを取得したいと思います。 –

+0

私はhttps://github.com/marklogic/python_apiを調べて助言したいと思います – grtjn

+0

@grtjn私はそれを試しましたが、Python 3のみをサポートしていて、私はPython 2.7で作業しています。 –

答えて

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 

を確認してください。

+0

文字列のデータを変換しているのですか、json形式で渡していますか? –

+0

"json.dumps"を使用して辞書をjsonに変換します。 –

+0

okありがとうバディ –

2

新しいJSONプロパティを追加しようとしています。 a PATCH commandを送信して、RESTクライアントAPIリクエストを使用してこれを行うことができます。パッチにan insert instructionを使用してください。

あなたは、ドキュメントのルートノードの直接の子としての特性を挿入するために、最後の子を使用できないことを示しており、Specifying Position in JSONに注意を参照してください。前または後に代わりに使用してください。詳細は、Limitations of JSON Path Expressionsを参照してください。

代わりに、あなたのパッチは次のようになります:topPropertyは更新したいJavaScriptオブジェクトのルート・ノードの一部であるJSONのプロパティです

{ 
    "insert": { 
    "context": "/topProperty", 
    "position": "after", 
    "content": 
     [ 
     { 
      "default": "http://www.youtube.com/watch?vu003dhYB0mn5zh2c" 
     } 
     ], 
    } 
} 

そのアプローチは、(例えば、確実に入手できます何topPropertyがない場合)、問題がある場合、あなたはまた、一連の操作を行うことができます:

この方法では、作業中に他のプロセスによってドキュメントが更新される可能性がありますその上に。書き込みを行っている他の人の潜在的な結果に応じて、optimistic lockingまたはmulti-statement transactionに頼ることができます。

関連する問題