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

Azure Cosmos DB查询问题:如何获取含指定组或空组的记录

解决Azure Cosmos DB查询返回空数组文档的问题

我来帮你搞定这个查询问题!

你的原查询之所以只能返回满足第一个条件的文档,核心问题出在join grp in p.groups这个操作上:当groups数组为空时,这个join不会生成任何匹配的行,那些groups为空的文档(比如你的文档2)根本不会进入WHERE条件的判断环节,自然无法被查询出来。

正确的查询语句

你不需要用join,直接针对p.groups数组做条件判断即可:

SELECT p.name, p.id 
FROM Product p 
WHERE ARRAY_CONTAINS(p.groups, {'name': 'abc'}, true) OR ARRAY_LENGTH(p.groups) = 0

关键细节解释

  • ARRAY_CONTAINS(p.groups, {'name': 'abc'}, true):第三个参数true表示进行精确匹配,它会检查数组中是否存在一个元素的name属性等于'abc',完美匹配你第一个条件的需求。
  • ARRAY_LENGTH(p.groups) = 0:直接判断数组是否为空,满足第二个条件。

用这个查询语句,你的文档1和文档2都会被正确返回:

  • 文档1:groups数组包含name为'abc'的元素,符合第一个条件;
  • 文档2:groups数组为空,符合第二个条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:15:58