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

WSO2 Data Service插入MongoDB嵌套对象失败求助

解决WSO2 Data Service向MongoDB插入嵌套字段的问题

问题分析

当前查询表达式错误使用clusterDetails.provisioned这类点分隔键名定义MongoDB嵌套文档,同时参数绑定未正确对应嵌套字段路径,导致WSO2 DS无法解析负载中的嵌套值。

修正后的查询配置

重构MongoDB插入表达式的JSON结构,采用嵌套对象语法,同时调整参数引用逻辑,确保嵌套字段能被正确读取:

<query id="mongo_insert" useConfig="fetchmongo">
    <expression>device_attributes.insert({
        "deviceId": ?,
        "vin": ?,
        "clusterDetails": {
            "provisioned": ?,
            "sbEndpoint": ?,
            "clusterName": ?,
            "clusterId": ?,
            "nbEndpoint": ?,
            "kubeMaster": ?,
            "status": ?
        }
    })</expression>
    <param name="deviceId" sqlType="INTEGER"/>
    <param name="vin" sqlType="STRING"/>
    <param name="provisioned" sqlType="STRING"/>
    <param name="sbEndpoint" sqlType="STRING"/>
    <param name="clusterName" sqlType="STRING"/>
    <param name="clusterId" sqlType="STRING"/>
    <param name="nbEndpoint" sqlType="STRING"/>
    <param name="kubeMaster" sqlType="STRING"/>
    <param name="status" sqlType="STRING"/>
</query>

关键修正点

  • 将点分隔键名改为"clusterDetails": {...}嵌套对象结构,匹配MongoDB文档格式要求。
  • 表达式参数占位符统一使用?(WSO2 DS对MongoDB的标准参数绑定占位符,兼容性更强)。

负载传递适配方案

方案1:扁平化负载(直接映射参数)

不管JSON还是XML负载,直接将嵌套字段拆平传递,示例JSON负载:

{
    "deviceId": 11111,
    "vin": "WRTHRKSHS0000011",
    "provisioned": "N",
    "sbEndpoint": "192.168.22.22",
    "clusterName": "clustertwo",
    "clusterId": "cluster11",
    "nbEndpoint": "192.168.22.22",
    "kubeMaster": "192.168.22.22",
    "status": "D"
}

方案2:保留嵌套结构(配置路径映射)

如果要保留原嵌套负载结构,需为嵌套字段的参数配置路径映射(以XML负载为例):

<param name="provisioned" sqlType="STRING" paramValueType="PATH" xpath="/root/clusterDetails/provisioned"/>
<param name="sbEndpoint" sqlType="STRING" paramValueType="PATH" xpath="/root/clusterDetails/sbEndpoint"/>
<!-- 其他嵌套字段参数同理配置xpath -->

配置后WSO2 DS即可从XML的clusterDetails节点下读取对应字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:45:35