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

Cosmos DB如何查询匹配指定对象列表的记录?

你写的这种直接在IN子句中传入完整JSON对象的查询,无法在Cosmos DB中正常执行获得预期结果。

原因

Cosmos DB的IN运算符仅支持对标量值(字符串、数字、布尔值等单个值)做批量匹配,不支持直接对完整JSON对象进行匹配校验。

正确实现方案

这里给你两种可直接运行的写法,都能得到你预期的查询结果:

方案1:拆分匹配条件用OR拼接

适合预定义对象数量少的场景,逻辑直观:

SELECT * FROM c
WHERE 
  (c.name = "name1" AND c.age = 25)
  OR (c.name = "name2" AND c.age = 27)

方案2:用ARRAY_CONTAINS做对象批量匹配

适合预定义对象数量多的场景,可直接把你的对象列表代入查询,不需要拆分大量OR条件:

SELECT * FROM c
WHERE ARRAY_CONTAINS(
  [{"name":"name1", "age":25}, {"name":"name2", "age":27}],
  {"name": c.name, "age": c.age},
  true
)

第三个参数true表示要求精确匹配对象的所有字段和值,避免出现字段不匹配的错误命中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:57:04