【发布时间】: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