MongoDB 使用 C# 的最后一个值或最大值
MongoDB Last value or Max value using C#
我在从 MongoDB table(集合)中检索最新值时遇到问题。
我的 table 没有 class 映射。由于动态行为,我无法为我的 table 创建 class。
例如
MyTable 有 4 列,下面提到的是 table 和值。
Id , DateTime, Column1, Column2
1 somTime 1 1
2 somTime 2 2
3 somTime 3
由于用户要求,table 是动态的,用户可以创建任意数量的列,并且可以分别向这些列中插入值。
在此我想获得插入 Column2 的最新值,即 2。
我的代码如下所示。
var maxDateTime = (from collect in document.AsQueryable()
select collect["dateTime"]).Max();
var qLatestValue = Query.EQ("DateTime", maxDateTime);
value = result["Column1"];
// this works fine since the Column1 exists
value = result["Column2"];
// this code is giving exception
检索到的文档中不存在 Column2。因此它抛出 keynotFound 异常。
如何获取这个Column2的最新值?
任何人都可以帮忙吗?
当您检索 maxDateTime
值时,您检索的是集合中的最新值,但此文档可能不包含 Column2
键
您需要在 maxDateTime
查询中包含一个 Where
子句,任何只获取 maxDateTime
存在 Column2
键的文档。
例如
Query.Exists("Column2")
您的 result
文档中没有名为 Column2
的文件。解决方案是通过
获得价值
方式一:
result["Column2", BsonNull.Value]
方式二:
result.GetValue("Column2", BsonNull.Value);
方式三:
BsonValue value;
var hasValue = doc.TryGetValue("Column2");
抱歉回复晚了。下面的代码解决了我的问题。
var maxDateTime =(from a in document.AsQueryable() where c[columnName] != BsonNull.Value select c["DateTime"]).Max();
var qlatest= Query.EQ("DateTime", maxDateTime);
var result = document.FindOne(qlatest);
value = result[columnName];
我在从 MongoDB table(集合)中检索最新值时遇到问题。
我的 table 没有 class 映射。由于动态行为,我无法为我的 table 创建 class。
例如 MyTable 有 4 列,下面提到的是 table 和值。
Id , DateTime, Column1, Column2
1 somTime 1 1
2 somTime 2 2
3 somTime 3
由于用户要求,table 是动态的,用户可以创建任意数量的列,并且可以分别向这些列中插入值。 在此我想获得插入 Column2 的最新值,即 2。
我的代码如下所示。
var maxDateTime = (from collect in document.AsQueryable()
select collect["dateTime"]).Max();
var qLatestValue = Query.EQ("DateTime", maxDateTime);
value = result["Column1"];
// this works fine since the Column1 exists
value = result["Column2"];
// this code is giving exception
检索到的文档中不存在 Column2。因此它抛出 keynotFound 异常。
如何获取这个Column2的最新值? 任何人都可以帮忙吗?
当您检索 maxDateTime
值时,您检索的是集合中的最新值,但此文档可能不包含 Column2
键
您需要在 maxDateTime
查询中包含一个 Where
子句,任何只获取 maxDateTime
存在 Column2
键的文档。
例如
Query.Exists("Column2")
您的 result
文档中没有名为 Column2
的文件。解决方案是通过
方式一:
result["Column2", BsonNull.Value]
方式二:
result.GetValue("Column2", BsonNull.Value);
方式三:
BsonValue value;
var hasValue = doc.TryGetValue("Column2");
抱歉回复晚了。下面的代码解决了我的问题。
var maxDateTime =(from a in document.AsQueryable() where c[columnName] != BsonNull.Value select c["DateTime"]).Max();
var qlatest= Query.EQ("DateTime", maxDateTime);
var result = document.FindOne(qlatest);
value = result[columnName];