我使用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")
我想知道是否有更好的方法来实现这一目标。如果我有数百个标签,我需要数百个条件。
答案 0 :(得分:3)
我知道没有别的方法可以实现你想要的。您可以编写代码,这些代码会自动扩展为ARRAY_CONTAINS
一系列OR
。