问题标签 [litedb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
822 浏览

vb.net - 在 Visual Basic .NET 中从 LiteDB 中选择/过滤数据

我正在尝试从 LiteDB NOSQL 数据库中检索数据,但我很难在 Visual Basic 中获得正确的语法。

数据库创建正确(在 LiteDBViewer 中验证)并且我可以计算集合中的值,但是当我尝试使用 生成查询时,Intellisense 会根据文档collection.Find()放入query:=,而不是。Query.Operation

我想我正在努力将 c# 代码转换为 VB.net 或遗漏一些明显的东西。

所有帮助或建议表示赞赏。

0 投票
1 回答
670 浏览

.net-core - 将 LiteDb 查询中的数据复制到列表中会导致 System.InvalidOperationException

我一直在使用 LiteDb 来提高我的数据馈送的性能。提要在 Azure 数据库上运行,为了减少我们使用的 DTU 和连接数量(我在并行 forach 循环中执行一些逻辑),我从数据库中提取数据,将其放入 LiteDb 索引中,然后运行我的逻辑。我的大多数场景都很好。我首先做一个插入批量添加索引,然后以只读模式重新打开 litdb 并运行我的查询类似这样的东西

它在所有场景中都非常有效。如果我尝试运行查询,然后尝试将该数据保存到 LiteDb 抱怨的另一个集合中。这就是我想要做的

此逻辑在 Parallel.Foreach 内部执行,LiteDb 抛出此错误

不知道我在这里做错了什么。任何指针都会有所帮助

0 投票
0 回答
425 浏览

c# - Blazor LiteDB 查询问题

我使用 .Net Core、Blazor 和 LiteDB 创建了一个项目。

有几篇文章参考了使用带有核心的 LiteDB,所以我认为那里没有问题。

这是我的代码。

如您所见,我在这里要做的就是返回我的集合中存在的组数量。我可以确认数据库中的集合中有记录。

无论我尝试什么,它总是返回 0。我是 Blazor 的新手(今天才开始学习),并且与核心一样新。我在一个类似的项目中使用过 LiteDB。

老实说,我不确定我是否与我的 LiteDB 建立了联系。我试图插入数据库,但这也没有任何作用。这会指出连接字符串的问题,但我刚刚从 .db 文件中复制了路径并使用了它。

有什么建议么?

0 投票
1 回答
1377 浏览

c# - LiteDB如何插入对象列表列表

我正在努力将带有对象列表的类插入/更新到我的 LiteDB 数据库中。我尝试了几件事和可能的解决方案,但我无法让它工作。

这是我的课程:

家长:

孩子:

我尝试使用 BsonMapper 映射这些集合:

但是当我尝试插入图片时,我得到了一个 nullReferenceException。

有人可以解释一下如何正确使用 LiteDB 中的列表列表吗?

非常感谢!布拉斯特夫

0 投票
0 回答
992 浏览

c# - 如何通过 LiteDB.LiteCollection 迭代大型 litedb 数据库文件中的特定键值

我正在使用带有 C# 代码的 LiteDB 创建一个独立的数据库,用于存储每个文件的元数据,如文件大小、绝对路径、创建时间、扩展名等。我在查询和迭代 db 文件中的确切键值时遇到问题,请帮忙谢谢。

这是我的插入查询,它从目录中获取每个文件的绝对路径,并将路径作为变量传递给我的类,以设置文件元数据值并返回带有值的对象以存储在 LiteDB 中。

/插入查询/

public void Search(/* 驱动路径 */)

{

foreach(Directory.GetFiles(path, " . ") 中的字符串文件)

{

尝试

{

使用(var db = new LiteDatabase(/我的数据库文件的路径/))

{

var FileDBptr = db.GetCollection("FileDB");

var data = new FileInfoDB(file);

FileDBptr.Insert(数据);

Console.WriteLine("成功插入");

}

}

捕获(异常 e)

{

Console.WriteLine("不能创建数据库!!!!" + e);

}

} foreach(Directory.GetDirectories(path) 中的字符串 subDir)

{

尝试

{

搜索(子目录);

}

抓住

{

扔;

}

}

}

/* 类模型 */

[可序列化]

//用于检索的查询代码

字符串文件名 = "$ICN03Z0.txt";

尝试 {

}

这是存储在 lite 数据库文件中的数据格式

{

"_id": {"$oid":"5c4ebee0f2e2d05814dcf865"},

"文件名": "$ICN03Z0.txt",

"文件路径": "C:\$Recycle.Bin\S-1-5-21-3439349906-2439027251-2956315770-1001\$ICN03Z0.txt",

"文件扩展名":".txt",

"文件大小": {"$numberLong":"114"},

"FileCreateTime": {"$date":"2019-01-16T09:04:16.0810000Z"},

"FileLastAccess": {"$date":"2019-01-16T09:04:16.0810000Z"},

"FileLastWrite": {"$date":"2019-01-16T09:04:16.0810000Z"}

}

我希望先根据文件名搜索值,然后提取同一文件的所有其他键值对数据。我尝试使用 GitHub 中提到的 LINQ 进行不同的查询,但总是抛出异常。还使用 LiteDB shell 验证了存储在 Lite 数据库中的数据,其插入格式为上述格式,但检索出现问题。

提前致谢!

0 投票
0 回答
454 浏览

c# - C# LiteDB - 索引和搜索文本块

用例:OCR PDF、索引文本并使文本可搜索

假设我有这样的课程:

当我扫描 PDF 时,我想将文档存储在单个页面结果中,因此 Scanned.PDF 存储在名称中:

然后,我将附加元数据(IE:名称)和生成的 OCR 文本

我的问题:

使 OCRText“可搜索”ala Google/ElasticSearch 的最佳方法是什么。

我希望能够搜索“John”并找到所有名称为 John 的页面(即:Johnny)

恐怕 OCRText 块上的索引可能很笨拙。

0 投票
2 回答
2024 浏览

c# - 在 LiteDB c# .net 中获取最新插入

我正在创建一种方法,将最后一个事务插入 litedb。

我确实有一个日期字符串,已保存。

这是课程:

这是事务对的插入方法。

我需要一个查找最新条目的 Linq 方法,或者它就像一个队列,我可以在其中弹出返回查询中的第一个值并获取最新的值?

0 投票
1 回答
3899 浏览

c# - LiteDB 更新集合

我正在测试 LiteDB 数据库,但在更新数据时遇到问题。让我们考虑源代码:

我原以为 paymentAmount 将是 2.0,但它只有 0。这就像只有 session.PaymentInfos.Id 很好,但所有其他属性都丢失了。我的会话更新有问题吗?也许我错过了什么?

提前致谢。

0 投票
1 回答
496 浏览

c# - LiteDB Find() 与 DateTime.Year 比较没有任何结果

在使用 LiteCollection 的实例方法 Find() 时,我将谓词作为参数传递给它。这是 Find() 方法:stus.Find(s => s.Birthday.Year <= 1996);,完整代码在这里:

学生.cs:

程序.cs:

filteredStudents不包含任何学生,只有"Student who has birth year before 1996:"一行被打印到控制台。那么这里有什么问题或者我错过了什么吗?感谢您阅读我的问题。

0 投票
0 回答
1720 浏览

c# - C# 通过网络并发访问 LiteDB 文件

我正在开发一个使用 LiteDB 存储数据的 C# 程序。在设计阶段,我被告知它将是一个单用户应用程序,因此 LiteDB 似乎是一个不错的解决方案。我以前没有使用过 LiteDB 的经验。

但是最近我被告知该程序需要支持多个用户通过计算机网络访问和写入同一个数据库。我知道 LiteDB 不是为这种方式设计的,所以很明显的决定是切换到任何其他基于服务器的 DBMS,比如 MySQL。

现在我知道 LiteDB 支持并发访问,所以我已经评估了程序中数据库的所有操作。这些操作不是连续的,不需要对数据库的持续访问。

我的第一个问题是 LiteDB 是否可以实现以下功能:

  1. 多达 20 个程序实例大致同时通过网络访问数据库文件并接收数据。收到数据后,数据库连接关闭。不会对数据库进行任何更改。
  2. 多达 20 个程序实例大致同时通过网络访问数据库文件并提交更改。写入数据后,数据库连接关闭。没有从数据库中读取任何数据。

我想知道这两个选项中是否至少有一个是可能的。如果没有,我应该使用什么作为替代方案?我在一家公司工作,因此这可以解释为限制我可以使用的 DBMS 范围的商业用途。

LiteDB 对我来说非常有吸引力,因为它使存储数据变得非常容易,在我的例子中,这是包含其他类实例作为属性的类的实例。

最好的替代方案是具有易于设置和支持并发访问的最少功能的便携式数据库服务器。