The general pattern for doing updates on persisted JSON documents in JavaScript
is to
1) get the document
2) turn it into an object
3) update the object
4) replace the document node with the updated object
Here's an example that updates the `balance` property of every document in the
`accounts` collection:
declareUpdate();
for(var doc of fn.collection('accounts')) {
var account = doc.toObject();
account.balance = account.balance * 1.05;
xdmp.nodeReplace(doc, account);
}
Note that you also need a declareUpdate(). The transaction is committed (or
rolledback) automatically, so you don't need the xdmp.commit().
Justin
--
Justin Makeig
Director, Product Management
MarkLogic
[email protected]
> On Sep 28, 2016, at 1:46 PM, Shiv Shankar <[email protected]> wrote:
>
> Hi Rob,
> Thanks for quick reply,
>
> Here is the sample scenario.
>
> I would be building random data and put in to newObjData in a for loop.
>
> 01.json = {"firstName": "abc", "lastName": "xyz"}
>
> newObjectData.firstName= "Donald";
>
> for Loop
> {
> xdmp.nodeReplace(cts.doc("/test/01.json"),newObjectData);
> xdmp.commit();
> }
>
>
>
>
>
> On Wed, Sep 28, 2016 at 4:37 PM, Rob Szkutak <[email protected]>
> wrote:
> Hi,
>
> Do you have a reproducible case of this I could look at?
>
> Best,
> Rob
>
> Rob Szkutak
> Senior Consultant
> MarkLogic Corporation
> [email protected]
> www.marklogic.com
>
> From: Shiv Shankar [[email protected]]
> Sent: Wednesday, September 28, 2016 3:35 PM
> To: [email protected]; Rob Szkutak
> Subject: XDMP-CONFLICTINGUPDATES: while using xdmp.nodeReplace
>
> Hi Rob,
>
> I am getting XDMP-CONFLICTINGUPDATES: while using xdmp.nodeReplace to update
> JSON attributes in FOR loop, instead of over-writing entire document. Any
> advice.
>
> BTW, I used xdmp.eval, but it is not identifying the java script variables.
>
> Thanks
> ShivShankar.
>
> _______________________________________________
> General mailing list
> [email protected]
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general