繁体   English   中英

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

[英]Marklogic: Skipping xml document while performing queries

我在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。 这些是摄取设置 摄取

权限 权限

用户nobody

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

Marklogic:如何知道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>父元素。

您将显示(不建议使用的)Information Studio Flow中的屏幕截图。 这是一个方便的小工具,可以跟踪何时加载了哪些文件。 它使用(也已弃用的) 票务系统这样做 此类文档将放入与票证ID相匹配的集合中,并且还将获得包含票证信息的文档属性。 您可能有382个文档和382个属性片段。 加上这些,您将得到764个计数,但是您的数据库中实际上只有382个文档。

HTH!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM