litedb - 通过 C# 进行简单的 LiteDB 查询(我在苦苦挣扎!)
问题描述
所以,我想我会试试 LiteDB,但我有点挣扎!
试图将日志数据写入其中。所以,我到目前为止(简化)
一个类(数据结构)
private class PerBarData
{
public DateTime ts { get; set; }
public double o { get; set; }
public double h { get; set; }
public double l { get; set; }
public double c { get; set; }
public double v { get; set; }
public Dictionary<int, double> r { get; set; }
}
我正在像这样向 LiteDB 写入数据
// Get a collection (or create, if doesn't exist)
var col = db.GetCollection<PerBarData>("PerBarData");
Dictionary<int, double> dict = new Dictionary<int, double>();
for (int i=1; i<maxIndexes; i++)
{
dict.Add(i,plotBIAS[i]);
}
// Create your new customer instance
var pbd = new PerBarData
{
ts = Time[1],
o = Open[1],
h = High[1],
l = Low[1],
c = Close[1],
v = Volume[1],
r = dict
};
// Insert new customer document (Id will be auto-incremented)
col.Insert(pbd);
这似乎有效,因为实际上正在添加记录。我可以在 LiteDB 工作室中看到这一点。我只能看到大概是序列化的文本。像这样的对象
/* 1 */
{
"_id": {"$oid": "6009b32dfb2026288486321a"}
}
/* 2 */
{
"_id": {"$oid": "6009b39dfb2026288486321b"}
}
所以 - 大概,到目前为止,我走对了。所以,要检索一些数据。我想要的只是两个日期之间的数据,或者至少超过一个日期。所以,我试试这个
DateTime startDate = Time[CurrentBar-1];
DateTime endDate = Time[0];
var col = db.GetCollection<PerBarData>("PerBarData");
// Use LINQ to query documents (filter, sort, transform)
var results = col.Find(Query.GTE("ts", startDate));
foreach(var pbd in results)
{
PPrint(pbd.ts.ToString());
}
但是,它通常只是挂在那里。当然,不会打印任何日期。我最初是在尝试 Query.Between 和 2 个日期。相同的。
任何人都可以把我推向正确的方向吗?我真的很想尝试一下。
谢谢。
解决方案
我最终设法解决了这个问题。find查询的替换,如下
var results = col.Find(x => x.ts >= startDate);
推荐阅读
- ios-simulator - 我可以一次在多个 iOS 模拟器上运行我的 Expo 应用程序吗?
- firebase - 归档 Firebase 云 Firestore
- swift - 实体中的一个属性导致swift4中的值为nil
- javascript - 赛普拉斯:检查浏览器是否处于全屏模式
- docker - 如何在 tileserver-gl 服务器上使用自定义字体(字形)?
- laravel - 如何动态启用 Laravel Debugbar?
- jsf - 从@ManagedBean 更改为@Named 不起作用
- android - 单击即可隐藏 AppBarLayout 和 BottomNavigationView
- google-chrome - 通过 XMLHttp 发送两个缓冲区
- python - Django:从 CSV 创建数据库表时出现 KeyError