database - 如何从 MongoDb 文档中获取特定值
问题描述
我正在尝试使用 IQueryable 对象从 Bson 文档中获取特定值。我有一个读取 json 结构的方法,如下所示。
"SimulatedData": [
{
"value": 1819.00923045901,
"units": "hp",
"tag": "comp/totalIhp",
"name": "Compressor - Total IHP"
},
{
"value": 789.294125,
"units": "RPM",
"tag": "comp/averageSpeed",
"name": "Compressor - Speed"
},
{
"value": 2064.74658240481,
"units": "hp",
"tag": "comp/totalBhp",
"name": "Compressor - Total BHP"
}
]
我正在阅读这个 JSON,获取“标签”键值,然后在 MongoDB 的集合中查找这个标签值。
try
{
string jsonFromFile;
using (var reader = new StreamReader(path))
{
jsonFromFile = reader.ReadToEnd();
}
var simulatedData = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(jsonFromFile);
foreach (var channel in simulatedData.SimulatedData)
{
var tag = channel.tag;
var master = DBConnect.CosmosClient.GetCollection<MasterVariables>("MasterVariables");
var channelId = master.AsQueryable().Where(x => x.Tag == $"{tag}");
foreach(var c in channelId)
{
string id = c.ChannelID;
Console.WriteLine(id);
}
}
}
'tag' 键的值将用于在 MasterVariables 中搜索匹配项。MasterVariables 中与“tag”键的值匹配的文档将生成如下 JSON/bson。我有一个类接受这些值并将它们设置为类属性
{
"Tag" : "comp/idealTotalSucCapacity",
"Group" : "{ id : \"comp\", parent : \"#\", text : \"Compressor\" }",
"Series" : "Compressor",
"Enabled" : true,
"ChannelID" : "C8",
"productType" : "Spotlight_Comp",
"database" : "compdata"
}
MasterVariables 类(下)
public class MasterVariables
{
public string Tag { get; set; }
public string Group { get; set; }
public string Series { get; set; }
public bool Enabled { get; set; }
public string ChannelID { get; set; }
public string productType { get; set; }
public string database { get; set; }
}
我的主要问题是我无法使用c.ChannelID
. 我的代码编译并且没有给我任何错误。但我很困惑为什么我无法使用 Iqueryable 对象获取 channelID 值。我知道以下foreach
内容不正确,因为我只会收到 1 个与“标签”值匹配的 Bson 文档。但是我没有发现任何有关获取 ChannelId 的不同方法的有用信息。关于我在这里做错了什么有什么想法吗?还是有不同的方法?
foreach(var c in channelId)
{
string id = c.ChannelID;
Console.WriteLine(id);
}
解决方案
推荐阅读
- c# - 这里叫什么:return _()
- xcode - 任何为 react-native 应用程序(iOS 和 Android)自动增加内部版本号和构建版本的工具
- c - concerning about write function,
- android - Android multi-user: get current user info
- python-3.x - 如何在 gensim 模型中查找令牌的数量
- flutter - How can I add line numbers to TextField on Flutter?
- c++ - Windows 10 上已安装应用的列表
- wordpress - Woocommerce - how to sort multiple size attributes for product page
- javascript - webpack 错误 configuration.module 有一个未知的属性 'loaders'
- java - GraphQL Apollo Federation-JVM 中 @extends 类型的解析器问题