Cosmos db sql查询数组搜索

问题描述 投票:1回答:1

我的文档结构如下

[
    {
        "id": "1",
        "author": "John Smith",
        "partNames": [
            "PART.5",
            "PART.10",
            "PART.15",
            "PART.30",
            "PART.31"
        ]
        ...
    },
    {
        "id": "2",
        "author": "Mike Smith",
        "partNames": [
            "PART.4",
            "PART.6",
            "PART.17",
            "PART.18",
            "PART.20"
        ]
        ...
    }
]

并且我尝试实现通过字段author和partNames搜索用户,因此用户可以执行类似]的查询>

SELECT * FROM c WHERE CONTAINS(c.author, 'John')

由于作者的名字是id=1,因此用户将得到John文档。

下一步是允许用户按部分要求提供文档,因此,例如,我想接收存在PART.4的文档,因此查询将为

SELECT * FROM c WHERE ARRAY_CONTAINS(c.partNames, 'PART.4', true)

它返回文档id=2

进一步,我想进行查询以允许用户仅键入PART.1,并且他将收到文档id=1id=2,因为它们都以PART.1开头。

那么有没有办法实现呢?

我具有如下文档结构[{“ id”:“ 1”,“ author”:“ John Smith”,“ partNames”:[“ PART.5”,“ PART.10”,“ PART.15” ,...

sql azure-cosmosdb
1个回答
0
投票
SELECT distinct value c FROM c join p in c.partNames where STARTSWITH(p, "PART.1")
© www.soinside.com 2019 - 2024. All rights reserved.