首页 > 解决方案 > 如何在 Azure 中构造 NoSQL 文档以按字符串数组查找?

问题描述

NoSQL新手在这里..

我有Employee文件,每个文件Employee都有一个name并且有一对多tag的。employee以下是JSON 格式的对象的可能表示形式:

{
  "name": "John Doe",
  "tags": ["blue", "red", "green"]
}

我希望能够通过它们的 s查询EmployeeCosmos DB 中的实例。tag例如,我想找到一个Employeewhere tags contains 'green'。AnEmployee不会有太多标签,最多可能有 10 或 15 个。

为这个用例建模文档结构的最佳方法是什么?此处的 cosmos db 文档建议了一个类似于以下的结构,原因我不明白:

{
  "name": "John Doe",
  "tags": [
    {
      "name": "blue"
    },
    {
      "name": "red"
    }
  ]
}

是否有任何理由将字符串数组拆分为这样的子 JSON 对象?

标签: nosqlazure-cosmosdb

解决方案


如何对文档进行建模完全取决于您的要求,对此没有严格的规定。

对于您的文档结构,我在我这边做了一些测试,这是我所有的测试文档,总共 4 个文档: 在此处输入图像描述

我可以使用下面的查询来找出所有包含“绿色”标签的员工:

SELECT c.name,c.tags FROM c where ARRAY_CONTAINS(c.tags, "green")

在此处输入图像描述


推荐阅读