【问题标题】:DocumentDB SQL check multiple values in arrayDocumentDB SQL 检查数组中的多个值
【发布时间】:2017-09-12 09:58:54
【问题描述】:

我使用 Azure 的 DocumentDB 作为我的数据库。我可能有数千个文档,并希望返回所有包含某些标签的文档。

例如:

文档 1

{
  "id": "328732,
  "name": "jeff",
  "tags": [
    "A",
    "B",
    "C"
  ]
}

文档 2

{
  "id": "54092,
  "name": "ayla",
  "tags": [
    "B",
    "D",
    "F"
  ]
}

文档 3

{
  "id": "98234,
  "name": "lara",
  "tags": [
    "B",
    "G",
    "H"
  ]
}

如果我有标签列表["A", "F", "X"],则应返回前两个文档(jeff 和 ayla)。 我可以通过使用内置函数 ARRAY_CONTAINS 和几个 OR 运算符来实现这一点:

SELECT * 
FROM c 
WHERE ARRAY_CONTAINS(c.groups, "A") OR
WHERE ARRAY_CONTAINS(c.groups, "F") OR
WHERE ARRAY_CONTAINS(c.groups, "X") 

我想知道是否有更好的方法来实现这一点。如果我有数百个标签,我将需要数百个条件。

【问题讨论】:

    标签: sql azure azure-cosmosdb


    【解决方案1】:

    我知道没有其他方法可以实现您想要的。您可以编写代码,使用ORs 自动扩展为一系列ARRAY_CONTAINS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多