You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XQuery循环中递增索引位置值及解决主机名获取问题

MarkLogic XQuery 主机名查询问题解决

原代码问题分析

$totalhosts是主机名字符串序列,for $h in $totalhosts循环时,每个$h是单个字符串而非序列。fn:index-of($h, 2)是在字符串中查找字符"2"的位置,和你需要的序列索引逻辑完全不符,因此无法得到正确结果。


1. 返回集群/组中所有主机名

直接返回$totalhosts即可,它已经包含了组内所有主机名:

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" 
 at "/MarkLogic/admin.xqy";

declare variable $totalhosts := xdmp:host-name(xdmp:group-hosts(xdmp:group()));

$totalhosts

2. 循环中递增索引遍历主机名

通过生成索引序列,结合下标访问实现递增索引遍历:

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" 
 at "/MarkLogic/admin.xqy";

declare variable $totalhosts := xdmp:host-name(xdmp:group-hosts(xdmp:group()));

for $i in 1 to fn:count($totalhosts)
return (
  "当前索引: " || $i,
  "对应主机名: " || $totalhosts[$i]
)

3. 获取指定索引(如索引2)的主机名

XQuery中序列下标从1开始,直接通过下标访问即可:

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" 
 at "/MarkLogic/admin.xqy";

declare variable $totalhosts := xdmp:host-name(xdmp:group-hosts(xdmp:group()));
declare variable $ind := 2;

$totalhosts[$ind]

内容的提问来源于stack exchange,提问作者Aviator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:43:22