LiteDB is a small, fast and lightweight NoSQL embedded database.
BsonDocument
using attributes or fluent mapper APIInstall-Package LiteDB
Expressions/Path
index/query support. See ExpressionsInclude
supportTry LiteDB Web Shell. For security reasons, in the online version not all commands are available. Try the offline version for full feature tests.
Visit the Wiki for full documentation. For simplified chinese version, check here.
Download the source code or binary only in LiteDB Releases
A quick example for storing and searching documents:
// Create your POCO class public class Customer { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string[] Phones { get; set; } public bool IsActive { get; set; } } // Open database (or create if doesn't exist) using(var db = new LiteDatabase(@"MyData.db")) { // Get customer collection var col = db.GetCollection<Customer>("customers"); // Create your new customer instance var customer = new Customer { Name = "John Doe", Phones = new string[] { "8000-0000", "9000-0000" }, Age = 39, IsActive = true }; // Create unique index in Name field col.EnsureIndex(x => x.Name, true); // Insert new customer document (Id will be auto-incremented) col.Insert(customer); // Update a document inside a collection customer.Name = "Joana Doe"; col.Update(customer); // Use LINQ to query documents (with no index) var results = col.Find(x => x.Age > 20); }
Using fluent mapper and cross document reference for more complex data models
// DbRef to cross references public class Order { public ObjectId Id { get; set; } public DateTime OrderDate { get; set; } public Address ShippingAddress { get; set; } public Customer Customer { get; set; } public List<Product> Products { get; set; } } // Re-use mapper from global instance var mapper = BsonMapper.Global; // "Produts" and "Customer" are from other collections (not embedded document) mapper.Entity<Order>() .DbRef(x => x.Customer, "customers") // 1 to 1/0 reference .DbRef(x => x.Products, "products") // 1 to Many reference .Field(x => x.ShippingAddress, "addr"); // Embedded sub document using(var db = new LiteDatabase("MyOrderDatafile.db")) { var orders = db.GetCollection<Order>("orders"); // When query Order, includes references var query = orders .Include(x => x.Customer) .Include(x => x.Products) // 1 to many reference .Find(x => x.OrderDate <= DateTime.Now); // Each instance of Order will load Customer/Products references foreach(var order in query) { var name = order.Customer.Name; ... } }
Change details for each release are documented in the release notes.
Copyright (c) 2017 - MaurĂcio David
A special thanks to @negue and @szurgot helping with portable version and @lidanger for simplified chinese translation.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4