【问题标题】:How to search JSON in depth in Azure Cosmos DB?如何在 Azure Cosmos DB 中深入搜索 JSON?
【发布时间】:2020-02-24 10:31:40
【问题描述】:

我在 Cosmos DB 中存储了如下所示的 JSON 文件。我想在活动/消息中搜索文本。

{
  "id": "575858a7-f814-41fd-ae5a-6f38ba2da957",
  "name": "Test Name",
  "activities": [
    {
      "message": "activity 1.1 message",
      "messageType": "type1"
    },
    {
      "message": "activity 1.2 message",
      "messageType": "type2"
    }
  ]
}

我发现我可以使用如下搜索。

SELECT * FROM c
WHERE CONTAINS(c.activities[0].message, "activity")

但是,这只能搜索活动数组中的第一条记录。如何搜索数组中的所有记录?谢谢。

【问题讨论】:

标签: azure azure-cosmosdb


【解决方案1】:

您需要在查询上应用连接,因此您的数组将被视为规范化实体,然后您可以应用过滤器。

select c.id, a.message
from c join a in c.activities
where CONTAINS(a.message,"activity")

More info

【讨论】:

  • 虽然提示错误信息'SELECT *' is only valid with a single input set.,但我可以这样轻松改正。 SELECT c.id, a.message FROM c JOIN a IN c.activities WHERE CONTAINS(a.message, "activity")谢谢!
  • 对不起,在这种情况下您需要指定具体的列。
  • 我编辑了我的初始回复,因此其他人不会遇到与您相同的问题。谢谢!
【解决方案2】:

这只是

SELECT * FROM c
WHERE CONTAINS(c.activities.message, "activity")

【讨论】:

    猜你喜欢
    • 2017-12-05
    • 2020-04-25
    • 2019-08-30
    • 2022-01-19
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    相关资源
    最近更新 更多