如何在 couchbase 中获取文档列表,我们必须根据属性过滤另一个数组中的数组?

how to get list of documents in couchbase where we have to filter base on attribute an array which is in another array?

 "contact": {
  "extendedData": [],
  "id": "org_2_1084",
  "organizationId": 1084,
  "organizationName": "abc",
  "organizationRoles": [
    {
      "name": "NLUZ",
      "organizationRoleId": 893,
      "roleSpecId": -104,
      "statusId": 1,
      "statusLastChangedDate": "2019-08-04T13:14:44.616Z"
    },
    {
      "extendedData": [
        {
          "characteristicId": "1",
          "characteristicValue": "M049",
          "extendedDataId": "364"
        },
        {
          "characteristicId": "2",
          "characteristicValue": "ST",
          "extendedDataId": "365"
        }
      ],
      "name": "SB - GULF NIGHT TECHNOTEL - LINGAYEN",
      "organizationRoleId": 894,
      "partyRoleAssocs": [
        {
          "partyRoleAssocId": "512"
        }
      ],
      "roleSpecId": -103,
      "statusId": 1,
      "statusLastChangedDate": "2019-08-04T13:14:44.616Z"
    },
    {
      "name": "SLUZ",
      "organizationRoleId": 895,
      "roleSpecId": -104,
      "statusId": 1,
      "statusLastChangedDate": "2019-08-04T13:14:44.616Z"
    },
    {

      "extendedData": [
        {
          "characteristicId": "1",
          "characteristicValue": "M050",
          "extendedDataId": "366"
        },
        {
          "characteristicId": "2",
          "characteristicValue": "ST",
          "extendedDataId": "367"
        }
      ],
      "name": "adfasd",
      "organizationRoleId": 896,
      "partyRoleAssocs": [
        {
          "partyRoleAssocId": "513"
        }
      ],
      "roleSpecId": -103,
      "statusId": 1,
      "statusLastChangedDate": "2019-08-04T13:14:44.616Z"
    }
  ],
  "statusId": 1,
  "statusLastChangedDate": "2019-08-04T10:14:44.697Z",
  "tenantId": "2",
  "type": "organization"
}

}

我必须 select 类型为组织的所有文档以及数组扩展数据中的任何 "characteristicValue" 是 "M050"。以上是示例文档结构。我如何在一个数组中搜索,该数组也是 couchbase 中另一个数组的一部分?

我试过下面的 N1ql 查询它不起作用。

SELECT *
FROM `contact`
UNNEST contacts.organizationRoles AS roles
WHERE contacts.type = "organization" 
AND ANY extendedData in roles satisfies 
extendeddata.characteristicValue="M050".

根据输出格式,您可以使用以下格式之一。

SELECT *
FROM `contact` AS c
UNNEST c.organizationRoles AS roles
UNNEST roles.extendedData AS e
WHERE c.type = "organization" AND e.characteristicValue = "M050";

SELECT *
FROM `contact` AS c
UNNEST c.organizationRoles AS roles
WHERE c.type = "organization" AND ANY e IN roles.extendedData SATISFIES e.characteristicValue = "M050" END;

SELECT *
FROM `contact` AS c
WHERE c.type = "organization" AND ANY roles IN c.organizationRoles
                              SATISFIES (ANY e IN roles.extendedData
                                         SATISFIES e.characteristicValue = "M050" END) END;