SQL 查询包含对象数组中的 属性 值
SQL Query CONTAINS property value in array of objects
我正在尝试创建一个 SQL 查询以获取用户所属公司的列表。数据库是 Cosmos DB Serverless,容器名为“公司”,里面有多个公司项目:
公司项目结构如下:
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Company Name",
"users": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Susan Washington",
"email": "susan.washington@gmail.com",
"createdBy": "xxxx@gmail.com",
"createdServerDateUTC": "2022-01-12T19:21:10.0644424Z",
"createdLocalTime": "2022-01-12T19:21:09Z"
},
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Kerwin Evans",
"title": "Test Dev",
"email": "kerwin.e@yahoo.com",
"createdBy": "xxxx@gmail.com",
"createdServerDateUTC": "2022-01-12T19:21:10.0644424Z",
"createdLocalTime": "2022-01-12T19:21:09Z"
},
ETC.
]
}
这是我尝试使用的 SQL 查询,其中用户是我传入的电子邮件:
SELECT *
FROM c
WHERE IS_NULL(c.deletedServerDateUTC) = true
AND CONTAINS(c.users, user)
ORDER BY c.name DESC
OFFSET 0 LIMIT 10
这行不通,因为 users 属性 是一个数组。所以我相信我需要检查用户数组中的每个对象,看看电子邮件 属性 是否与我输入的用户匹配。
您可以通过ARRAY_CONTAINS()
查询数组。对于您指定的给定 username
的 return 公司名称,类似这样的内容:
SELECT c.name
FROM c
WHERE ARRAY_CONTAINS(c.users,{'name': username}, true)
第三个参数设置为true
表示数组元素是文档,而不是标量值。
我正在尝试创建一个 SQL 查询以获取用户所属公司的列表。数据库是 Cosmos DB Serverless,容器名为“公司”,里面有多个公司项目:
公司项目结构如下:
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Company Name",
"users": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Susan Washington",
"email": "susan.washington@gmail.com",
"createdBy": "xxxx@gmail.com",
"createdServerDateUTC": "2022-01-12T19:21:10.0644424Z",
"createdLocalTime": "2022-01-12T19:21:09Z"
},
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Kerwin Evans",
"title": "Test Dev",
"email": "kerwin.e@yahoo.com",
"createdBy": "xxxx@gmail.com",
"createdServerDateUTC": "2022-01-12T19:21:10.0644424Z",
"createdLocalTime": "2022-01-12T19:21:09Z"
},
ETC.
]
}
这是我尝试使用的 SQL 查询,其中用户是我传入的电子邮件:
SELECT *
FROM c
WHERE IS_NULL(c.deletedServerDateUTC) = true
AND CONTAINS(c.users, user)
ORDER BY c.name DESC
OFFSET 0 LIMIT 10
这行不通,因为 users 属性 是一个数组。所以我相信我需要检查用户数组中的每个对象,看看电子邮件 属性 是否与我输入的用户匹配。
您可以通过ARRAY_CONTAINS()
查询数组。对于您指定的给定 username
的 return 公司名称,类似这样的内容:
SELECT c.name
FROM c
WHERE ARRAY_CONTAINS(c.users,{'name': username}, true)
第三个参数设置为true
表示数组元素是文档,而不是标量值。