Azure cosmosdb 在Azure Cosmos DB中按值数组进行搜索
文档包含带有字符串数组的字段标记,例如[“tag1”、“tag2”、“tag3”]。如何获取同时使用tag1和tag2的所有文档 我尝试了ARRAY_CONTAINS,但在这个查询中,CosmosDB返回带有tag1的所有文档和带有tag2的所有文档,而不仅仅是在tag1和tag2同时存在的地方Azure cosmosdb 在Azure Cosmos DB中按值数组进行搜索,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,文档包含带有字符串数组的字段标记,例如[“tag1”、“tag2”、“tag3”]。如何获取同时使用tag1和tag2的所有文档 我尝试了ARRAY_CONTAINS,但在这个查询中,CosmosDB返回带有tag1的所有文档和带有tag2的所有文档,而不仅仅是在tag1和tag2同时存在的地方 SELECT VALUE files FROM files JOIN tag IN files.Tags WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(
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"
]
}
]
是的,当然可以,但是可能哪里有一些构建it解决方案来摆脱手工构建查询。