我如何 select 所有在字段中包含特定模式的文档?

How do I select all documents containing a certain pattern in the fields?

如果我有一组文档类型:

{
    "contactId": "V1234",
    "accessMap": {
        "130134:24": ["RG1234", "RG456"],
        "12345:45": [".....", "....", ..],
        ...
    },
    "documentType"="CONTACT_ACCESS_MAP"
}

如何向 select 所有 meta().id 的文档编写查询,在这种情况下,130134:24 存在于访问映射中?

我的想法大致如下:

SELECT n for n in OBJECT_NAMES(accessMap) from 访问服务 where n like "130134:24%" and documentType="CONTACT_ACCESS_MAP

我将假定您的 JSON 文档实际上有效 JSON,如下所示:

{
  "contactId": "V1234",
  "accessMap": {
    "130134:24": [
      "RG1234",
      "RG456"
    ],
    "12345:45": [
      ".....",
      "....",
      ".."
    ]
  },
  "documentType": "CONTACT_ACCESS_MAP"
}

OBJECT_NAMES 的方向是正确的。在 WHERE 子句中使用 ANY n IN expression SATISFIES condition END syntax,像这样:

SELECT META(s).id
FROM accessservices s
WHERE ANY n IN OBJECT_NAMES(accessMap) SATISFIES n LIKE "130134:%" END;