I have couple of documents on which xdmp:node-replace()
over certain elements doesnot work. There are some other set of documents which are almost similar to the ones that has problem but xdmp:node-replace
works perfectly fine on them. Tried all possibilities that could have gone wrong but in vain. Read some where that xdmp:node-replace
function does not work on 'in memory elements'.
So in order to verify whether the issue is with 'in memory elements', I want to know what exactly it is.
Any light on it would be of great help
MarkLogic fuses together database internals, search-style indexing, and application server behaviors into a unified system. It uses XML and JSON documents as its data model, and stores the documents within a transactional repository.
The universal index indexes the XML elements and JSON properties in the loaded documents. By default, MarkLogic Server builds a set of indexes that is designed to yield the fast query performance in general usage scenarios. You can configure MarkLogic to index additional data to speed up specific types of searches.
MarkLogic is a multi-model NoSQL database that has evolved from its XML database roots to also natively store JSON documents and RDF triples for its semantic data model. It uses a distributed architecture that can handle hundreds of billions of documents and hundreds of terabytes of data.
Three Databases are created by default, Security Database, Schema Database and Documents Database.
Anything constructed within a query is an in-memory element. For example this XQuery yields an in-memory element:
<test/>
Some function calls also return in-memory elements: xdmp:unquote
is an obvious example. Any node that doesn't come from the current database will be treated as an in-memory node.
This query yields a database element (if it exists), which could be modified using xdmp:node-replace
:
doc('fubar')/test
This is a typical in-memory update error:
xdmp:node-replace(<x/>, <y/>)
With MarkLogic 6.0-1.1, the error code is XDMP-UPCONSTNODES
.
If you want to update in-memory nodes as if they were in the database by using similar function calls, there's a utility library that does that:
https://github.com/marklogic/commons/tree/master/memupdate
The main library also ships with MarkLogic Server under App Services:
appservices/utils/in-mem-update.xqy
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With