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

WSO2集成Studio中查询含#字符的MongoDB记录为何报参数不足?

问题原因

WSO2 Integration Studio的MongoDB数据服务解析逻辑会把查询语句中的#字符识别为参数占位符,而非普通文本字符。这就导致你的查询被引擎误判为需要传入对应参数,但你并没有提供参数值,因此抛出IllegalArgumentException: Not enough parameters passed to query错误。而Mongo Compass不会做这种特殊解析,所以查询能正常执行。

解决办法

方法1:转义#字符

在查询表达式里给#加上反斜杠\转义,明确告诉引擎这是普通字符:

<expression>
    collectionName.count({"_id.type": 'https://uri.fiware.org/ns/data-models\#Building'})
</expression>

方法2:使用参数绑定(更推荐)

通过参数传递的方式避免引擎误解析,同时让查询更灵活:

  1. 先在数据服务配置中定义参数:
<param name="targetType" sqlType="STRING"/>
  1. 修改查询表达式,用?占位符引用参数:
<expression>
    collectionName.count({"_id.type": ?})
</expression>
  1. 调用数据服务时,传入参数值:https://uri.fiware.org/ns/data-models#Building
验证

修改完成后重新部署数据服务,执行查询即可正常获取结果,和Mongo Compass中的运行效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:31:18