Xquery 在eXist中,如何在动态确定的集合上运行表达式?
我有一个查询,它动态地确定一个集合名称和一个表达式,以对返回布尔值的集合求值。说:Xquery 在eXist中,如何在动态确定的集合上运行表达式?,xquery,exist-db,Xquery,Exist Db,我有一个查询,它动态地确定一个集合名称和一个表达式,以对返回布尔值的集合求值。说: $my collection指向集合,例如包含字符串/db/my/collection 布尔表达式是存在(/foo/bar) 我可以在集合本身上运行exists(/foo/bar),它将返回true或false,具体取决于集合中的文档是否包含/foo/bar。但是,如果事先不知道集合名称,我怎么能这样做呢 我天真地尝试了collection($mycollection)/exists(/foo/bar)。但是
指向集合,例如包含字符串$my collection
/db/my/collection
- 布尔表达式是
存在(/foo/bar)
exists(/foo/bar)
,它将返回true或false,具体取决于集合中的文档是否包含/foo/bar
。但是,如果事先不知道集合名称,我怎么能这样做呢
我天真地尝试了collection($mycollection)/exists(/foo/bar)
。但是由于返回集合中的文档节点,因此这将返回集合中文档的数量,而不是一个布尔值。这不是我想要的,而且它可能非常慢,因为我的收藏可能包含数万个文档
那么,我应该怎么写呢?您可以将表达式改写为:
exists(collection($my-collection)/foo/bar)
或者,根据现有的查询优化器,这可能会执行得更好:
exists((collection($my-collection)/foo/bar)[1])
嗯 您可以将表达式改写为:
exists(collection($my-collection)/foo/bar)
或者,根据现有的查询优化器,这可能会执行得更好:
exists((collection($my-collection)/foo/bar)[1])
嗯