从DocumentDB中的数组中选择

时间:2015-08-12 18:09:40

标签: azure azure-cosmosdb

我在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

1 个答案:

答案 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