如何为显示的蔚蓝cosmos db文档编写SQL查询?

时间:2018-06-21 06:14:38

标签: sql azure-cosmosdb

我在azure cosmos db集合中有以下文档。

// Document 1
{
    "c": {
        "firstName": "Robert"
    }
    "elements" : [
        {
            "a": "x2",
            "b": {
                "name": "yadda2",
                "id": 1
            }
        }
    ]
}

// Document 2
{
    "c": {
        "firstName": "Steve"
    }
    "elements" : [
        {
            "a": "x5",
            "b": {
                "name": "yadda2",
                "id": 4
            }
        },
        {
            "a": "x3",
            "b": {
                "name": "yadda8",
                "id": 5
            }
        },
    ]
}

// Document 3
{
    "c": {
        "firstName": "Johnson"
    }
    "elements" : [
        {
            "a": "x4",
            "b": {
                "name": "yadda28",
                "id": 25
            }
        },
        {
            "a": "x5",
            "b": {
                "name": "yadda30",
                "id": 37
            }
        },
    ]
}

我需要编写一个查询,以返回所有具有“ b”对象且名称为“ yadda2”(即/ elements / * / b / name = yadda2)的文档。换句话说,此查询应返回文档1和2,但不返回3。

我尝试了以下操作,但没有成功:

SELECT * FROM x,其中ARRAY_CONTAINS(x.elements,{b:{名称:“ yadda2”}})

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

只需将您的sql修改为:

SELECT * FROM x where ARRAY_CONTAINS(x.elements, {b: { name: "yadda2"}},true)

结果:

enter image description here

基于官方doc,布尔表达式可以指定匹配是完全匹配还是部分匹配。

希望它对您有帮助。