【发布时间】:2020-01-13 12:28:22
【问题描述】:
我正在使用 Cosmos DB,我想编写一个 SQL 查询,该查询将匹配基于 id 的文档数组中的公共值。
详细来说,假设您有以下三个文件:
{
"id": "2ECF4568-CB0E-4E11-A5CD-1206638F9C39",
"entityType": "ServiceInformationFacility",
"facilities": [
{
"id": "6F706BA3-27AD-45B8-9831-A531E37C4C17",
"facilityName": "Kat Service Center",
"phoneNumber": "9879561234"
},
{
"id": "7F706BA3-27AD-45B8-9831-A531E37C4C17",
"facilityName": "Honda Service Center",
"phoneNumber": "9879561234"
}]
},
{
"id": "3ECF4568-CB0E-4E11-A5CD-1206638F9C39",
"entityType": "ServiceInformationFacility",
"facilities": [
{
"id": "8F706BA3-27AD-45B8-9831-A531E37C4C17",
"facilityName": "Hyundai Service Center",
"phoneNumber": "9879561234"
},
{
"id": "7F706BA3-27AD-45B8-9831-A531E37C4C17",
"facilityName": "Honda Service Center",
"phoneNumber": "9879561234"
}]
},
{
"id": "6ECF4568-CB0E-4E11-A5CD-1206638F9C39",
"entityType": "ServiceInformationFacility",
"facilities": [
{
"id": "8F706BA3-27AD-45B8-9831-A531E37C4C17",
"facilityName": "Hyundai Service Center",
"phoneNumber": "9879561234"
},
{
"id": "7F706BA3-27AD-45B8-9831-A531E37C4C17",
"facilityName": "Honda Service Center",
"phoneNumber": "9879561234"
} ]
}
我想编写一个查询,返回所有基于 id 的公共设施。这意味着当传递 Id 列表时,应该显示给定 Id 中存在的设施(不是要么或)。 所以在上面的集合中,它应该只返回 "facilityName": "Honda Service Center" 通过传递参数 id("2ECF4568-CB0E-4E11-A5CD-1206638F9C39"," 3ECF4568-CB0E-4E11-A5CD-1206638F9C39","6ECF4568-CB0E-4E11-A5CD-1206638F9C39")。
到目前为止我已经尝试过:
SELECT q.facilityName FROM c
join q in c.facilities
where c.id in('6ECF4568-CB0E-4E11-A5CD-1206638F9C39','2ECF4568-CB0E-4E11-A5CD-1206638F9C39')AND c.entityType = 'ServiceInformationFacility'
它给了我所有的设施名称,但我只需要上述文件中常见的设施,即“facilityName”:“Honda Service Center”。
提前致谢
【问题讨论】:
标签: azure-cosmosdb azure-cosmosdb-sqlapi