我在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”}})
我在做什么错了?
答案 0 :(得分:1)
只需将您的sql修改为:
SELECT * FROM x where ARRAY_CONTAINS(x.elements, {b: { name: "yadda2"}},true)
结果:
基于官方doc,布尔表达式可以指定匹配是完全匹配还是部分匹配。
希望它对您有帮助。