Cosmos DB动态属性场景下如何查询Key5下任意属性值匹配的文档
动态匹配嵌套对象任意属性值的查询方案
针对你使用的类SQL查询语法(对应Cosmos DB SQL API场景),可以通过内置的对象处理和数组匹配函数实现无需指定属性名的查询:
最终查询语句
SELECT TOP 10 * FROM Collection c WHERE ARRAY_CONTAINS(OBJECT_VALUES(c.Key5), '2021-09-03T09:32:55')
逻辑说明
OBJECT_VALUES(c.Key5)会提取Key5对象下所有属性的值,输出为一维数组,无需感知具体属性名ARRAY_CONTAINS()校验上述数组中是否存在你指定的目标值,只要Key5下有任意一个属性的值匹配就会命中对应文档
优化兼容方案
如果集合中存在Key5为空、或者Key5不是对象类型的文档,可以增加类型判断避免查询异常:
SELECT TOP 10 * FROM Collection c WHERE IS_OBJECT(c.Key5) AND ARRAY_CONTAINS(OBJECT_VALUES(c.Key5), '2021-09-03T09:32:55')
内容的提问来源于stack exchange,提问作者Brave Soul
相关产品推荐
相关产品推荐

