我在DocumentDB中有一个类似于此的文档
{
"profile": {
"personName": {
"namePrefix": XXX,
"givenName": "XXX",
"middleName": XXX,
"surname": "XXX",
"nameSuffix": XXX,
"nameTitle": XXX
},
"telephones": {
"telephone": [
{
"telephoneType": "Home",
"isDefault": true,
"countryAccessCode": 1,
"areaCityCode": XXX,
"phoneNumber": "XXX"
},
{
"telephoneType": "Work",
"isDefault": false,
"countryAccessCode": 1,
"areaCityCode": XXX,
"phoneNumber": "XXX"
}
]
},
}
"id": "05d236f0-2970-4f04-9785-1c62c5ddbae5"
我正在尝试使用Azure搜索并将索引的数据展平。我只想要包含标记为isDefault = true的电话。
我尝试了以下以及尝试ARRAY_CONTAINS,但都没有返回预期的结果。
SELECT p.id, p.profile.personName.givenName, p.profile.personName.surname, p.profile.telephones.telephone.countryAccessCode, p.profile.telephones.telephone.areaCityCode, p.profile.telephones.telephone.phoneNumber FROM Profiles p JOIN t IN p.profile.telephones.telephone WHERE t.isDefault = true
答案 0 :(得分:2)
您可以使用JOIN
中的别名来提取数组元素。
例如:
SELECT p.id,
p.profile.personName.givenName,
p.profile.personName.surname,
t.countryAccessCode,
t.areaCityCode,
t.phoneNumber
FROM Profiles p
JOIN t IN p.profile.telephones.telephone
WHERE t.isDefault = true