azure-cosmosdb - CosmosDB,通过嵌套数组帮助扁平化和过滤

标签 azure-cosmosdb

我正在尝试扁平化和过滤 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/

相关文章:

c# - 如何使用 C# 将 json 插入到 cosmos db 集合中

c# - 使用 Microsoft.Azure.Storage (cosmosDB) 更新表对象失败

azure - 如何使用 Spring Boot 应用程序通过 Azure Functions 安排 Cosmos DB 数据处理

azure - DocumentDb 更改 Feed 事件类型?

azure - 如何设计ADF管道将一个容器数据拆分到cosmos数据库的多个容器中

azure - Visual Studio Code - AZURE COSMOS DB 扩展 - 提供的凭据无效(错误 401)

azure - 无法通过 Ajax 调用使用 Azure 文档 DB-REST API

java - 使用 cosmosdb Spring Boot Starter 的示例 Spring Boot 应用程序无法启动,输入字节数组在 88 处的结束字节不正确

azure - 函数进入休眠状态后,Cosmos db 更改提要触发器不会触发

javascript - 在没有 try/catch 的情况下检查 CosmosDB 项目是否存在