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 };
现在由您决定如何在您的方案中使用它。
以上是关于Azure C#,过滤存储在cosmos DB中的原始数据(通过功能URL显示)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中从 Azure 函数调用 Cosmos DB 存储过程?
如何在 Azure Cosmos DB 的一个查询中选择多个聚合值