【发布时间】:2026-01-11 03:40:01
【问题描述】:
只是了解 CosmosDB 的来龙去脉。我在 CosmosDB 中有以下测试文档:
[
{
"matchingID":123,
"many":{
"meta":"some data",
"items":[
{
"matchingID":921
},
{
"matchingID":123
}
]
}
},
{
"matchingID":1337,
"many":{
"meta":"some more data",
"items":[
{
"matchingID":1337
},
{
"matchingID":1337
}
]
}
},
{
"matchingID":9001,
"many":{
"meta":"all the datas",
"items":[
{
"matchingID":42
},
{
"matchingID":5318008
}
]
}
}
]
请注意,这些是测试文档 - 实际文档在根项和子项中都有更多属性。每个项目在c.many.items 下都有一个子数组。这个子数组有一个属性,它可能匹配也可能不匹配它的根上的那个。我希望实现的是创建一个查询,允许我返回其子项全部匹配的项目,以及另一个将返回其中任何匹配项的查询。
例如
SELECT * FROM c WHERE ALL(c.many.items.matchingID) = c.matchingID 将返回第二个项目,因为所有子项目属性都匹配其父项:
{
"matchingID":1337,
"many":{
"meta":"some more data",
"items":[
{
"matchingID":1337
},
{
"matchingID":1337
}
]
}
}
SELECT * FROM c WHERE ANY(c.many.items.matchingID) = c.matchingID 将返回第一个对象,至少有一个子项匹配属性
{
"matchingID":123,
"many":{
"meta":"some data",
"items":[
{
"matchingID":921
},
{
"matchingID":123
}
]
}
}
【问题讨论】:
标签: azure-cosmosdb