XQuery返回不在集合中的项目

肖恩·麦克加里(Shane McGarry)

我在以下文档上编写一些XQuery:

<pages>
   <page>
      <content yearID="1998">
         <month monthID="1">
            ...
         </month>
         <month monthID="2">
            ...
         </month>
         ...
      </content>
   <page>
</pages>

我想查询给定年份和月份的文档,并使其仅返回该月份的整个节点(不包括其他月份)。我的XQuery如下:

for $x in doc("alcala/ledger.xml")//pages/page
where $x/content[@yearID="1998"] and $x/content/month[@monthID="2"] 
return $x

我的结果是给我第1个月和第2个月。如果我搜索monthID =“ 3”,则得到第2个月和第3个月。我只尝试了一个月的搜索(没有年份过滤器),但得到的结果相同。为什么给我上个月的一部分以及我想要的月份?如何删除不需要的月份?

马丁·洪恩

到目前为止,您只是page从输入中选择满足您where条件的元素如果您想操纵输入(即删除month您不感兴趣的输入),则需要构造新内容,例如,一种简单的方法是使用

for $x in /pages/page
where $x/content[@yearID="1998"] and $x/content/month[@monthID="2"]
return 
    <page>{
        $x/content[@yearID = 1998]
        !<content>{
            @*, month[@monthID = 2]
                !<month>{@*, node()}</month>
        }</content>
    }</page>

尽管那样,您必须两次编写一些条件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

REST获取不在集合中的项目

如何返回集合中的项目数?

返回所有数字均不在其他集合中的所有集合

将特定项目放在最上面而不在 laravel 集合中对其他项目进行排序

Object.keys(obj)返回不在obj中的项目

如果要删除的项目不在列表中,如何返回“ false”

Sharepoint online - 不在列表中的特定视图中返回项目

为什么Laravel不返回集合中的项目

MongoDB 聚合 $lookup 以从主集合中返回不匹配的项目

如何从列表中删除项目并返回新列表而不在颤振中删除项目

使用 HashSet 根据 T 的属性删除不在另一个集合中的项目

如果要删除的值不在集合中,是否有python集合删除方法返回一个值?

仅当集合中的所有项目都符合特定条件时,才返回集合ID

Mongoose - 从集合中返回所有项目(没有搜索参数)时,从集合中返回的项目不包含它们的 mongo _id

如何获取不在集合中的元素?

选择不在集合中的不同记录

如何显示不在列表中的集合

从集合(集合)中获取任何项目

从集合中的项目访问通用集合的实例

返回不在模型中的字段

在循环返回调用代码之前,如何修改通用集合中的项目

count() 方法是返回 eloquent 集合中的项目计数还是直接从 sql 查询中计算行数

一旦项目在集合中,C#ContainsKey将返回true

如何从集合中删除项目?

分组输出集合中的项目

集合中添加项目(Python)

访问项目集合中的属性

从项目集合中调用项目

MarkLogic中的复杂Xquery,用于多个集合中的文档