我在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
答案 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!