[MarkLogic Dev General] Sorting and De-duping

Christopher Hamlin cbhamlin at gmail.com
Fri Jul 31 09:51:09 PDT 2015


Huh.  I guess I didn't understand what you wanted after all.  I
thought you were ordering by an attribute originally and you wanted to
keep them in order of first appearance, not just alphabetize.

And it doesn't seem right that distinct-values should care what the return does.

Anyway, glad it's working.

Regarding maps, there's the doc, and a blog post, which should pretty
much cover the subject:

http://docs.marklogic.com/guide/app-dev/hashtable

https://developer.marklogic.com/blog/im-a-map

On Fri, Jul 31, 2015 at 12:32 PM, Kari Cowan <KCowan at alm.com> wrote:
> If you're curious, this was the final working version of the snippet.  The distinct-values function was giving me an error until I cast the return as a string.
>
> Thanks for the tips.  Is there a tutorial for map:map or just RTFN?
>
>
> xquery version "1.0-ml";
> declare namespace ec = "http://www.alm.com/event-calendar";
>
> let $directory:="/data-sources/editorial-calendar/"
> let $future-calendar-docs:=
> cts:search(
>   xdmp:directory($directory),
>   cts:and-query((
>     cts:element-attribute-range-query(xs:QName("ec:MaterialsDueDate"), xs:QName("date"), ">=", xs:date(fn:current-date()) ),
>     cts:element-query(xs:QName("ec:approval_status"),cts:word-query("true"))
>   ))
> )
>
> for $audience in fn:distinct-values($future-calendar-docs//ec:audience)
> order by $audience
> return xs:string($audience)
>
>
>
> -----Original Message-----
> From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com] On Behalf Of Kari Cowan
> Sent: Thursday, July 30, 2015 1:59 PM
> To: MarkLogic Developer Discussion <general at developer.marklogic.com>
> Subject: Re: [MarkLogic Dev General] Sorting and De-duping
>
> Thanks.  I haven't worked with the map function yet.  I was trying to use distinct-values in the for loop, but get an error that my value isn't a node (which is true)
>
> for $audience in xs:string(fn:distinct-values($these-docs//ec:audience))
> order by $audience
> return $audience/fn:string()
>
>>> [1.0-ml] XDMP-NOTANODE: (err:XPTY0019) $audience/fn:string(.) --
>>> "Automotive" is not a node
>
> How would I map this a cts search?
>
> xquery version "1.0-ml";
> declare namespace ec = "http://www.alm.com/event-calendar";
> let $directory:="/data-sources/editorial-calendar/"
> let $these-docs:=
> cts:search(
>   xdmp:directory($directory),
>   cts:and-query((
>     cts:element-attribute-range-query(xs:QName("ec:MaterialsDueDate"), xs:QName("date"), ">=", xs:date(fn:current-date()) ),
>     cts:element-query(xs:QName("ec:approval_status"),cts:word-query("true"))
>   ))
> )
>
> for $audience in $these-docs//ec:audience order by $audience  return $audience/fn:string()
>
>
>
> -----Original Message-----
> From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com] On Behalf Of Christopher Hamlin
> Sent: Thursday, July 30, 2015 12:46 PM
> To: MarkLogic Developer Discussion <general at developer.marklogic.com>
> Subject: Re: [MarkLogic Dev General] Sorting and De-duping
>
> Just to look ahead a little to that next question: fn:distinct-values says "The order in which the sequence of values is returned is implementation dependent."
>
> One way to maintain order is to go through your values in order, only pass the ones that haven't been seen.  map:map is useful for that kind of side effect.
> _______________________________________________
> General mailing list
> General at developer.marklogic.com
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general
>
>
>
> _______________________________________________
> General mailing list
> General at developer.marklogic.com
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general
>
>
>
> _______________________________________________
> General mailing list
> General at developer.marklogic.com
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general


More information about the General mailing list