Erik,
If I understand correctly, you mean to say, if I know the document from where I
need to fetch the elements, still the cts:search will be faster than fn:doc()
For example: fn:doc("/misc/SavedTextSearches.xml")/TextSearches/User[Name =
$User] ) (: slower :)
cts:search(/TextSearches/User,
cts:element-value-query(xs:QName("Name"), $User) (: faster:)
Thanks
Pragya
________________________________
From: [email protected]
<[email protected]> on behalf of Erik Hennum
<[email protected]>
Sent: Wednesday, January 27, 2016 7:13 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] If xml element exists
Hi, Pragya:
If you need to retrieve the document anyway, you can test for the existence or
absence of nodes with:
http://docs.marklogic.com/fn:exists
http://docs.marklogic.com/fn:empty
as in
let $root:= fn:doc("/misc/SavedTextSearches.xml")/TextSearches
let $hasUser := ($root/User/Name/string(.) = $User)
let $isHidden := fn:exists($root/Hidden)
return ...
To find documents of interest based on criteria, however, you should use
cts:search() instead of fn:doc(),
fn:doc() retrieves documents into memory before inspecting the document, where
cts:search() matches against the indexes and thus (depending on the criteria)
retrieves many fewer documents much more quickly.
Hoping that helps,
Erik Hennum
________________________________
From: [email protected]
[[email protected]] on behalf of Kapoor, Pragya
[[email protected]]
Sent: Tuesday, January 26, 2016 10:32 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] If xml element exists
Few more examples:
if ($DocRecord[fn:not(.[Hidden])])
then
()
else
$DocRecord
if ($NumOfGroups = 1)
then
$DocRecords[fn:not(.[Hidden])]
else ()
________________________________
From: [email protected]
<[email protected]> on behalf of Kapoor, Pragya
<[email protected]>
Sent: Wednesday, January 27, 2016 11:38 AM
To: MarkLogic Developer Discussion
Subject: [MarkLogic Dev General] If xml element exists
Hi,
I need to check the below conditions at multiple places, if there are other
more performant way to achieve these:
if ( fn:doc("/misc/SavedTextSearches.xml")/TextSearches/User[Name = $User] )
then
"YES"
else
"NO"
if ( fn:doc("/misc/SavedTextSearches.xml")/TextSearches )
then
( )
else 'p'
Thanks
Pragya
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general