我正在尝试扁平化和过滤 CosmosDB 中的 json 数据。
数据如下所示,我想展平数组变量中的所有内容,然后按数组内的特定 _id 和时间戳进行过滤:
{
"_id": 21032,
"FirstConnected": {
"$date": 1522835868346
},
"LastUpdated": {
"$date": 1523360279908
},
"Variables": [
{
"_id": 99999,
"Values": [
{
"Timestamp": {
"$date": 1522835868347
},
"Value": 1
}
]
},
{
"_id": 99998,
"Values": [
{
"Timestamp": {
"$date": 1523270312001
},
"Value": 8888
}
]
}
]
}
最佳答案
如果您只想通过嵌套的 '_id' 属性查找过滤,那么您可以使用 ARRAY_CONTAINS 并将 partial_match 参数设置为 true。查询看起来像这样:
SELECT VALUE c
FROM c
WHERE ARRAY_CONTAINS(c.Variables, {_id: 99998}, true)
如果您还想展平数组,则可以使用 JOIN
SELECT VALUE v
FROM v IN c.Variables
WHERE v._id = 99998
关于azure-cosmosdb - CosmosDB,通过嵌套数组帮助扁平化和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758552/