Tôi muốn sử dụng Group By in xquery. Ai đó có thể cho tôi biết làm thế nào để sử dụng Group By trong Marklogic?Cách sử dụng Group By in Marklogic?
Trả lời
Câu trả lời ngắn gọn là sử dụng map:map
. Xem http://docs.marklogic.com/map:map để biết tài liệu và http://blakeley.com/blogofile/archives/560/ để thảo luận lâu hơn.
Hoặc, bạn có thể gọi đến XSLT bằng cách sử dụng xdmp:xslt-invoke
hoặc xdmp:xslt-eval
. Bộ xử lý XSLT của MarkLogic hỗ trợ XSLT 2.0, bao gồm hỗ trợ đầy đủ cho <xsl:for-each-group>
.
Xem câu trả lời của @mg_kedzie để biết ví dụ .. – grtjn
MarkLogic bao gồm các phần của XQuery 3.0 (với phương ngữ 1,0 ml), nhưng tiếc là nhóm FLWOR thiếu hỗ trợ.
Tuy nhiên, bạn vẫn có thể tạo nhóm theo cách lập trình bằng cú pháp sẽ đạt được kết quả tương tự. Dưới đây là một ví dụ XQuery:
for $d in distinct-values(doc("order.xml")//item/@dept)
let $items := doc("order.xml")//item[@dept = $d]
order by $d
return <department code="{$d}">{
for $i in $items
order by $i/@num
return $i
}</department>
HTH
xquery version "1.0-ml";
let $xml:= <Students>
<Student Country="England" Name="Dan" Age="20" Class="C"/>
<Student Country="England" Name="Maria" Age="20" Class="B" />
<Student Country="Australia" Name="Mark" Age="22" Class="A" />
</Students>
let $xsl:= <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:template match="Students">
<result>
<xsl:for-each-group select="Student" group-by="@Country">
<country>
<xsl:attribute name="name"><xsl:value-of select="fn:current-grouping-key()"/></xsl:attribute>
<xsl:for-each select="fn:current-group()/@Name">
<name><xsl:value-of select="."/></name>
</xsl:for-each>
</country>
</xsl:for-each-group>
</result>
</xsl:template>
</xsl:stylesheet>
return xdmp:xslt-eval($xsl,$xml)
đã không được sử dụng MarkLogic. Nhưng vui lòng xem http://blakeley.com/blogofile/archives/560/ –
Phiên bản MarkLogic bạn đang sử dụng có hỗ trợ bản nháp XQuery 3.0 không? (Nó chỉ bằng 3,0 mà 'nhóm by' hỗ trợ đã được thêm vào FLWOR biểu thức, trước thời điểm đó, bạn phải làm điều đó cho mình). Bạn có thể tìm thấy tóm tắt về 'nhóm by' trong XQuery 3.0 tại http://docs.basex.org/wiki/XQuery_3.0#Group_By –