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

AWS DocumentDB中$multiply与负整数相乘报错问题咨询

AWS DocumentDB中$multiply与负整数NumberInt相乘报错的解决办法

问题概况

在AWS DocumentDB 2.0.8934版本中,使用$multiply操作符时,若参数包含NumberInt(-1)会触发MongoCommandException,错误码17287,提示"Bad query specified"。但相同逻辑在MongoDB中可正常执行,同时以下场景不受影响:

  • 正整数之间的$multiply操作(如$multiply: [ NumberInt(1), NumberInt(1) ])
  • 单独给字段赋值NumberInt(-1)
  • 直接使用-1的简易查询(非$multiply或仅简单上下文)

需要注意的是,即使直接用-1,在$cond表达式中结合$multiply仍会报错。

可行解决方案

方案1:用数值字面量替代NumberInt(-1)

将NumberInt(-1)替换为普通的-1字面量,DocumentDB可正常解析执行,且结果会保持整数类型(当另一个参数为NumberInt时):

"$addFields" : {
  sigh: { $multiply: [ -1, NumberInt(1) ] }
}

方案2:通过$subtract间接实现取反效果

如果需要严格保持整数类型的运算逻辑,可利用$subtract替代负整数相乘:

"$addFields" : {
  sigh: { $subtract: [ 0, NumberInt(1) ] }
}

针对多参数相乘的场景,可先计算正整数的乘积,再通过$subtract取反,例如:

"$addFields" : {
  total: { $subtract: [ 0, { $multiply: [ NumberInt(2), NumberInt(3) ] } ] }
}

补充说明

该问题属于DocumentDB 2.x版本的兼容性缺陷,MongoDB原生支持NumberInt(-1)与$multiply的组合操作。若业务允许,升级DocumentDB到3.x及以上版本可彻底解决此问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:52:09