json - 无法使用 Cosmos DB SQL 检索 JSON 值小节的详细信息
问题描述
我有一个我正在尝试使用 Cosmos DB SQL 处理的 JSON 数据字段。
这是JSON
{
"id": "consultationservice||8acd52b4-f4c3-4124-b1c3-89bc57a25f4f",
"value": {
"Id": "8acd52b4-f4c3-4124-b1c3-89bc57a25f4f",
"timeZone": "Pacific Info",
"proposedMeetingTimes": [
"2019-01-06T17:16:40",
"2019-01-06T17:16:40",
"2019-01-06T17:16:40"
],
"proposedMeetingTime": "2019-01-06T17:16:40",
"SomeInnerData": [
{
"Id": "25c52709-4ef6-4045-a623-5eca3957a532",
"Email": [
"email@email.com",
"email1@email.com",
"email2@email.com"
],
"connectionInformation": "The best connection",
"sentOn": "2019-01-06T17:16:40"
}
]
},
"partitionKey": "UserAvailability",
"_rid": "8BMWALYVDbIHAAAAAAAAAA==",
"_self": "dbs/8BMWAA==/colls/8BMWALYVDbI=/docs/8BMWALYVDbIHAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-169d-6f5b4f8201d7\"",
"_attachments": "attachments/",
"_ts": 1615484346
}
我可以使用这种格式检索 VALUE 部分内的任何数据
SELECT UserAvailability["value"].SomeInnerData
FROM UserAvailability
WHERE UserAvailability["value"].Id = '8acd52b4-f4c3-4124-b1c3-89bc57a25f4f'
或者
SELECT UserAvailability["value"].Email
FROM UserAvailability
WHERE UserAvailability["value"].Id = '8acd52b4-f4c3-4124-b1c3-89bc57a25f4f'
但是,无论我尝试做什么,都无法检索 SomeInnerData(例如 Id、Email、connectionInformation、sentOn)部分中的任何数据。请协助
先感谢您
解决方案
你SomeInnerData
是一个数组,你不能通过UserAvailability["value"].SomeInnerData.Id
.
如果此数组中只有一项,则可以尝试以下操作:
SELECT UserAvailability["value"].SomeInnerData[0].Id,UserAvailability["value"].SomeInnerData[0].Email,UserAvailability["value"].SomeInnerData[0].connectionInformation,UserAvailability["value"].SomeInnerData[0].sentOn
FROM UserAvailability
JOIN SID IN UserAvailability["value"].SomeInnerData
WHERE UserAvailability["value"].Id = '8acd52b4-f4c3-4124-b1c3-89bc57a25f4f'
结果:
[
{
"Id": "25c52709-4ef6-4045-a623-5eca3957a532",
"Email": [
"email@email.com",
"email1@email.com",
"email2@email.com"
],
"connectionInformation": "The best connection",
"sentOn": "2019-01-06T17:16:40"
}
]
如果你有很多项目,你应该使用JOIN。加入将导致参与加入的集合的完全叉积。
SELECT UserAvailability["value"].SomeInnerData,SID.Id,SID.Email,SID.connectionInformation,SID.sentOn
FROM UserAvailability
JOIN SID IN UserAvailability["value"].SomeInnerData
WHERE UserAvailability["value"].Id = '8acd52b4-f4c3-4124-b1c3-89bc57a25f4f'
结果:
[
{
"SomeInnerData": [
{
"Id": "25c52709-4ef6-4045-a623-5eca3957a532",
"Email": [
"email@email.com",
"email1@email.com",
"email2@email.com"
],
"connectionInformation": "The best connection",
"sentOn": "2019-01-06T17:16:40"
}
],
"Id": "25c52709-4ef6-4045-a623-5eca3957a532",
"Email": [
"email@email.com",
"email1@email.com",
"email2@email.com"
],
"connectionInformation": "The best connection",
"sentOn": "2019-01-06T17:16:40"
}
]
推荐阅读
- sql - 从 MS Access 中删除重复记录的查询
- javascript - 在数组中的每个当前字符串之间添加新字符串
- python-3.x - 当我们读取文件并打开它时会发生什么
- asp.net - 如何防止其他管理员用户解密 Web 配置
- c++ - 在 C++ 中模拟抛硬币时,模数是如何工作的?
- python - 添加到 numpy 3D 数组
- python-3.x - 升级到 python 3.8 (Debian 9) 后 Pip 错误(无法从“pip”导入名称“main”)
- python - Colab 在 12GB 内存崩溃后不要求 25GB 内存
- linux - 在 Ubuntu 的 conda/anaconda 中将默认环境从 (base) 更改为 (env)
- java - jsp 文件在控制器类中无法识别