在 Azure Cosmos DB 中按值数组搜索数组
Search in array by array of values in Azure Cosmos DB
文档包含带有字符串数组的字段标记,例如 [“tag1”、“tag2”、“tag3”]。我怎样才能得到所有带有 tag1 和 tag2 的文档?
我试过 ARRAY_CONTAINS,但是对于这个查询,CosmosDB returns 所有带有 tag1 的文档和所有带有 tag2 的文档,而不仅仅是 tag1 和 tag2 在一起的地方。
SELECT VALUE files FROM files JOIN tag IN files.Tags WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(["tag1", "tag2"], tag, false)
我的示例数据
[
{
"id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
"Tags": [
"tag1",
"tag2"
]
},
{
"id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
"Tags": [
"tag1",
"tag3"
]
},
{
"id": "0bbd57d1-38cb-4094-81cf-33703448bbcd",
"Tags": [
"tag1"
]
}
]
你可以试试这样的 SQL:
SELECT *
FROM files
WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(files.Tags, "tag1",false) AND ARRAY_CONTAINS(files.Tags, "tag2",false)
结果:
[
{
"id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
"Tags": [
"tag1",
"tag2"
]
}
]
文档包含带有字符串数组的字段标记,例如 [“tag1”、“tag2”、“tag3”]。我怎样才能得到所有带有 tag1 和 tag2 的文档?
我试过 ARRAY_CONTAINS,但是对于这个查询,CosmosDB returns 所有带有 tag1 的文档和所有带有 tag2 的文档,而不仅仅是 tag1 和 tag2 在一起的地方。
SELECT VALUE files FROM files JOIN tag IN files.Tags WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(["tag1", "tag2"], tag, false)
我的示例数据
[
{
"id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
"Tags": [
"tag1",
"tag2"
]
},
{
"id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
"Tags": [
"tag1",
"tag3"
]
},
{
"id": "0bbd57d1-38cb-4094-81cf-33703448bbcd",
"Tags": [
"tag1"
]
}
]
你可以试试这样的 SQL:
SELECT *
FROM files
WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(files.Tags, "tag1",false) AND ARRAY_CONTAINS(files.Tags, "tag2",false)
结果:
[
{
"id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
"Tags": [
"tag1",
"tag2"
]
}
]