Azure Cosmos SQL-使用嵌套数组并使用LIKE关键字 [英] Azure Cosmos SQL - working with nested arrays and using LIKE keyword

查看:29
本文介绍了Azure Cosmos SQL-使用嵌套数组并使用LIKE关键字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一段时间,当我必须根据特定值查找数组的特定元素时,我一直在使用ARRAY_CONTAINS函数。现在,我有了具有嵌套数组的文档,在这些文档中,我必须搜索的不是特定值,而是使用正则表达式。

作为文档示例,让我使用官方文档中的一个文档:

{
  "id": "AndersenFamily",
  "lastName": "Andersen",
  "parents": [
     { "firstName": "Thomas" },
     { "firstName": "Mary Kay"}
  ],
  "children": [
     {
         "firstName": "Henriette Thaulow",
         "gender": "female",
         "grade": 5,
         "pets": [{ "givenName": "Fluffy" }]
     }
  ],
  "address": { "state": "WA", "county": "King", "city": "Seattle" },
  "creationDate": 1431620472,
  "isRegistered": true
}

我需要的是选择并完全获取children中至少有一个pets元素的所有文档,其中givenName包含";Fluf&Quot;。

我要构建什么SQL查询来实现它?

推荐答案

以下查询使用JOINs展平内部pets数组并应用过滤,然后返回整个匹配的系列项目:

SELECT VALUE f
FROM Families f
JOIN c IN f.children
JOIN p IN c.pets
WHERE p.givenName LIKE "%Fluf%"
找出此类查询的复杂性是我认为值得考虑将数据建模为尽可能平坦的原因之一,例如,包括规范化以具有单独的pets项,这些项可以使用直接属性筛选器进行查询,而无需处理嵌套。根据您的目标,将所有内容合并到一个大型Family对象中(如示例所示)在实践中不一定是个好主意。

这篇关于Azure Cosmos SQL-使用嵌套数组并使用LIKE关键字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆