如何编写Cosmos DB查询获取不带数组名的子数组并修复空对象返回问题
Cosmos DB查询解决方案
1. 直接返回子数组内容(省略外层键名)
你可以使用SELECT VALUE子句搭配JOIN操作实现需求,SELECT VALUE的作用是直接返回目标值,省略外层的属性键包装,JOIN用于展开子数组中的元素:
SELECT VALUE e FROM c JOIN e IN c.event WHERE IS_DEFINED(c.event) AND ARRAY_LENGTH(c.event) > 0
执行上述查询后,返回结果会和你给出的期望输出完全一致,子数组中的每个对象会直接作为顶级结果数组的元素,不会携带event键名。
如果你需要返回完整的子数组作为单个结果项,不需要展开元素,可以使用简化写法:
SELECT VALUE c.event FROM c WHERE IS_DEFINED(c.event)
2. 消除返回结果中的空对象
返回结果中出现空对象的原因是你的容器内存在不包含event字段、event字段为null或者event数组长度为0的文档,这些文档没有匹配的返回字段时就会输出空对象。上述两段查询中已经加入了对应的WHERE过滤条件,会自动过滤不符合要求的文档,即可彻底消除空对象。
内容的提问来源于stack exchange,提问作者Suklesh Rao
相关产品推荐
相关产品推荐

