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显示)的主要内容,如果未能解决你的问题,请参考以下文章