LiteDB 是一个简单、快速、轻量级的嵌入式 .NET 文档数据库。由于受到 MongoDB 数据库的启发,LiteDB API 与 MongoDB 官方 .NET API 差不多(这里指 1.x 版)。

如何安装

LiteDB 是一个 serverless 数据库, 不需要安装,只要复制LiteDB.dll 到你的 Bin 文件夹并添加引用即可。当然,如果你喜欢的话,也可以通过 NuGet 安装:Install-Package LiteDB。如果需要在 Web 环境下运行,请确保 IIS 用户对数据文件所在文件夹有写权限。

第一个例子

一个简单的例子,用来展示如何存储和搜索文档:

  1. // 创建你的 POCO 类实体
  2. public class Customer
  3. {
  4. public int Id { get; set; }
  5. public string Name { get; set; }
  6. public string[] Phones { get; set; }
  7. public bool IsActive { get; set; }
  8. }
  9. // 打开数据库 (如果不存在自动创建)
  10. using(var db = new LiteDatabase(@"C:\Temp\MyData.db"))
  11. {
  12. // 获取一个集合 (如果不存在创建)
  13. var col = db.GetCollection<Customer>("customers");
  14. // 创建新顾客实例
  15. var customer = new Customer
  16. {
  17. Name = "John Doe",
  18. Phones = new string[] { "8000-0000", "9000-0000" },
  19. IsActive = true
  20. };
  21. // 插入新顾客文档 (Id 自增)
  22. col.Insert(customer);
  23. // 更新集合中的一个文档
  24. customer.Name = "Joana Doe";
  25. col.Update(customer);
  26. // 使用文档的 Name 属性为文档建立索引
  27. col.EnsureIndex(x => x.Name);
  28. // 使用 LINQ 查询文档
  29. var results = col.Find(x => x.Name.StartsWith("Jo"));
  30. // 让我们创建在电话号码字段上创建一个索引 (使用表达式). 它是一个多键值索引
  31. col.EnsureIndex(x => x.Phones, "$.Phones[*]");
  32. // 现在我们可以查询电话号码
  33. var r = col.FindOne(x => x.Phones.Contains("8888-5555"));
  34. }

用于文件存储

需要存储文件?没问题:使用 FileStorage。

  1. // 从文件系统上传一个文件到数据库
  2. db.FileStorage.Upload("my-photo-id", @"C:\Temp\picture-01.jpg");
  3. // 然后下载
  4. db.FileStorage.Download("my-photo-id", @"C:\Temp\copy-of-picture-01.jpg");