Azure C#,过滤存储在cosmos DB中的原始数据(通过功能URL显示)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure C#,过滤存储在cosmos DB中的原始数据(通过功能URL显示)相关的知识,希望对你有一定的参考价值。

我有一个存储在cosmos DB中的JSON数据(温度,湿度,光线),并在函数URL中显示为原始数据,我能够返回所有未经过滤的数据。我将如何过滤这些数据,以仅显示特定数据,例如温度,Im新天蓝色,而我不知道该如何开始。

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, IEnumerable<dynamic> inputDocument, ILogger log)
{
    var result = new OkObjectResult(inputDocument);
    return result;
}

我试图将结果存储在JSON对象中,但是当我返回它时,函数URL中没有数据。

我正在尝试过滤的数据:

[
  {
    "myIoTHubMessage": "{"temperature":34.123939224110885,"humidity":64.35605799050818,"light":21.041931184493905,"decibel":14.208070081289891}"
  }
]
答案

基于此评论:

Id喜欢返回提供给该函数的数据的子集,所以可以说我存储温度,湿度和光线,我想过滤掉湿度和光线,因此仅在返回时才显示温度

这就像返回Anonymous type一样简单。

[匿名类型提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而不必先明确定义一个类型。类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。

在您的特定情况下(伪代码):

public static async Task<IActionResult> Run(HttpRequest req, IEnumerable<dynamic> inputDocuments, ILogger log)
{
    return new OkObjectResult(inputDocuments.Select(document => new 
    {
        Temperature = document.Temperature
    }));
}

BTW:如果您知道要输入的文档类型,则可能需要显式键入它们,而不要使用dynamic

编辑:按照我的指定,我发布了一些pseudo code,以使您大致了解其工作方式。 is实际需要进行一些工作才能使其适合您的特定方案。例如:根据您发布的问题,我们对您邮件的结构一无所知。

我检查过,此代码有效:

dynamic dyn = JsonConvert.DeserializeObject("{ "myIoTHubMessage": {"temperature":34.123939224110885,"humidity":64.35605799050818,"light":21.041931184493905,"decibel":14.208070081289891 } }");
var x = new { Temperature = dyn.myIoTHubMessage.temperature };

The value of x

现在由您决定如何在您的方案中使用它。

以上是关于Azure C#,过滤存储在cosmos DB中的原始数据(通过功能URL显示)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中从 Azure 函数调用 Cosmos DB 存储过程?

如何在 Azure Cosmos DB 的一个查询中选择多个聚合值

Azure 数据工厂和 Cosmos DB

带有 Cosmos DB 绑定的 Azure 函数返回格式化的 DateTime?

存储资源管理器未列出 Cosmos DB 文档

如何使用 azure 流分析将 cosmos db 中的值更新为输出?