鉴于如下所示的文档结构,其中“变体”具有基于N id的子条目,我想过滤内部的“ sku”字段。与此类似:
SELECT * FROM c WHERE c.variants.?.sku = "some_sku_1"
此处“ some_id_1”和“ some_id_2”是ID值,由数据驱动,不能作为查询的一部分。
Cosmos DB是否可行?如果可以,怎么办?
{
"id": "45144",
"variants": {
"some_id_1": {
"sku": "some_sku_1",
"title": "some title 1"
},
"some_id_2": {
"sku": "some_sku_2",
"title": "some title 2"
}
}
}
答案 0 :(得分:2)
如果不使用UDF / SPROC,则无法使用该架构执行此操作,但是如果您稍稍更改该架构,就可以做到。
模式:
{
"id": "45144",
"variants": [
{
"id": "some_id_1",
"sku": "some_sku_1",
"title": "some title 1"
},
{
"id": "some_id_2"
"sku": "some_sku_2",
"title": "some title 2"
}
]
}
查询:
SELECT * FROM c IN Item.variants WHERE c.sku == "some_sku_1"
请查看本文,以使您更好地了解使用“ IN”语句可以执行的操作,该语句可以迭代对象。in this answer