Marklogic:执行查询时跳过xml文档

时间:2016-09-28 09:27:54

标签: xml database xquery marklogic

我在MarkLogic中运行XQuery。数据库中的xml文档数为764.查询返回结果的文档数为382,这是数据库中可用文档数的一半。我尝试过一个简单的代码来确保实际发生这种情况:

declare namespace rec="http://apa.org/pimain";

for $record at $index in /rec:Record 
return $index

我得到的最后一个$index是382.我已确保数据库中的实例数为764。有什么想法吗?

对于数据加载,我使用过Information Studio。这些是摄取设置 ingestion

权限 permissions

用户为nobody

2 个答案:

答案 0 :(得分:1)

这是您的问题的重新发布 -

Marklogic: How to know the number of records returned by an xquery?

我猜你提供了更多信息,这样做很好。

鉴于您fn:count(/rec:Record)得到382,听起来您要么遇到名称空间,文档结构或权限问题。

通过了解您是否以具有admin privs或其他用户的用户身份执行XQuery,可以排除权限。如果您以另一个用户身份运行它,请确保所有文档都加载了该用户的读取权限。 xdmp:document-get-permissions($uri)可以帮助您...请访问docs.marklogic.com获取更多帮助。

当您点击查询控制台时,您看到了多少条记录"探索"按钮?这可以给你一些见解。

您希望数据库中有764个文档,那么从fn:count(fn:doc())返回的内容是什么?这将返回数据库中的文档计数。如果你得到的不是你期望的764,那么你需要提供更多关于你如何加载记录的信息,因为你没有预期的文件数量。

要尝试的另一个代码段,特别是如果您在数据库中有其他文档,则尝试fn:count(/*:Record)。这将返回具有<Record>父元素的任何文档的计数,而不管命名空间如何。如果你得到764,那么你的一半文档加载了与你声明的名称不同的命名空间,但是具有相同的<Record>父元素。

答案 1 :(得分:1)

您可以显示(已弃用的)Information Studio流程中的屏幕截图。这是一个方便的小工具,可以跟踪何时加载了哪些文件。它是使用(也已弃用)ticket system完成的。这些文档将被放入与票证ID匹配的集合中,并且还将获得具有票证信息的文档属性。您可能有382个文档和382个属性片段。添加这些并获得您观察到的764计数,但您的数据库中只有382个文档。

HTH!