Cosmos DB SQL查询在数组中进行搜索

时间:2019-12-18 12:18:06

标签: sql azure-cosmosdb

我的文档结构如下

<build>
    <plugins>
        <!-- display active profile in compile phase -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-help-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>show-profiles</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>active-profiles</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

并且我尝试实现通过字段author和partNames搜索用户,以便用户可以进行

这样的查询

[ { "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" ] ... } ]

由于作者姓名为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.1id=1,因为两者的部分都以id=2开头

那么有没有办法实现呢?

1 个答案:

答案 0 :(得分:1)

请在sql以下进行测试:

SELECT distinct value c FROM c
join p in c.partNames
where STARTSWITH(p, "PART.1")

结果:

enter image description here