LiteDB Changelog

What's new in LiteDB 5.0.0 Alpha

Aug 5, 2019
  • New major version:
  • Complete new engine - WAL (Write Ahead Log)
  • MultiVersion Concurrency Control (Snapshots & Checkpoint)
  • Full transaction support
  • Multi readers support, no lock
  • Write lock per collection
  • Up to 32 indexes per collection
  • New FileStorage with custom Id type
  • New BsonExpressions: transform, filter, map, reduce, ..
  • New Query Pipe inside engine
  • Upgrade datafile from LiteDB v4 (use upgrade=true in connection string)
  • New Linq visitor (with support more expressions)
  • New fluent Query
  • And more than one year of hard working!!
  • SQL Support:
  • New SQL language support - very similar with ANSI SQL
  • Select, Insert, Update, Delete, Create Index, Drop Index, Drop Collection
  • Support GroupBy, Having, Limit, Offset, OrderBy, Includes, ...
  • System virtual collection (get information about database)
  • Support to system function (import/export CSV/JSON)
  • LiteDB Studio:
  • New UI for Windows
  • Multi tab, multi thread, multi transactions
  • New LiteDB.Studio (for Windows) with SQL support

New in LiteDB 4.1.4 (Jun 20, 2018)

  • Fix IncludeAll missing method

New in LiteDB 4.1.3 (May 29, 2018)

  • Added IncludeAll method
  • Added LENGTH method expression

New in LiteDB 4.1.2 (Mar 12, 2018)

  • Bugfix:
  • Fix DateTime UTC in index Min/Max
  • Initial size with encryption #929
  • Better message when using OSX about file lock
  • Remove System.Threading reference for netstandard
  • Fix collection sequence in shrink #899
  • Fix shrink lock page #892
  • Fix NextIndex dictionary
  • New:
  • Add "flush" option in connection string (support direct in disk flush after write operation)

New in LiteDB 4.1.0 (Dec 17, 2017)

  • Add UTC deserialization support (use utc=true on connection string)
  • New FindSort operation with paging (experimental)
  • New TempDiskService for temporary database
  • New shell detail help help <command>
  • Bugfix initial data-size
  • Bugfix logger ctor #776 @parabola949
  • Expressions:
  • Add support to Document syntax: new BsonExpression("{_id: 1, name: 'John'}")
  • Add support to Array syntax: new BsonExpression("[1, 'two', false]")
  • Add document function: EXTEND()
  • Add cast functions: INT(), DOUBLE(), STRING(), DATE() ...
  • Add date functions: DATEADD(), DATEDIFF(), YEAR(), MONTH(), DAY()

New in LiteDB 4.0.0 (Oct 20, 2017)

  • New Features:
  • Add support to NETStandard 2.0 (with support to Shared mode)
  • New document Expression parser/executor - see Expression Wiki
  • Support index creation with expressions
  • Query with Include it´s supported in Engine level with ANY nested includes
  • Support complex Linq queries using LinqQuery compiler (works as linq to object)
  • col.Find(x => x.Name == "John" && x.Items.Length.ToString().EndsWith == "0")
  • Better execution plan (with debug info) in multi query statements
  • No more external journal file - use same datafile to store temporary data
  • Fixed concurrency problems (keeps thread/process safe)
  • Convert Query.And to Query.Between when possible
  • Add support to Query.Between open/close interval
  • Same datafile from LiteDB v3 (no upgrade needed)
  • Shell:
  • New UPDATE/SELECT statements in shell
  • Shell commands parser/executor are back into LiteDB.dll
  • Better shell error messages in parser with position in error
  • Print query execution plan in debug
  • (Seek([Age] > 10) and Filter([Name] startsWith "John"))
  • (preparing to new visual LiteDB database management tool)
  • Break changes:
  • Remove transactions
  • Remove auto-id register function for custom type
  • Remove index definitions on mapper (fluent/attribute)
  • Remove auto create index on query execution. If the index is not found do full scan search (use EnsureIndex on initialize database)

New in LiteDB 4.0.0 Beta 2 (Oct 3, 2017)

  • Add KEYS, MOD expression function
  • Add support for ( and ) inside expressions
  • Improve expression reader/parser
  • Bugfix: return _id when insert
  • Minor bugfixes

New in LiteDB 4.0.0 Beta 1 (Sep 12, 2017)

  • Break changes:
  • Remove transactions
  • Remove auto-id register function for custom type
  • Remove index definitions on mapper (fluent/attribute)
  • Remove auto create index on query execution. If the index is not found do full scan search (use EnsureIndex on initialize database)
  • New Features:
  • New Expressions/Path
  • New shell command: UPDATE fields only
  • New shell command: SELECT with transform
  • Remove physical journal file (store journal pages after file ends)
  • Add auto-id in engine level with pre-defined common types
  • Add collection sequence (ulong) to use in engine level auto-id
  • Auto-id default true to _id with BsonType = ObjectId, Guid, DateTime, Int32 or Int64
  • Add include in engine/document level with any level
  • Compiled in NET35 for Unity3D support, NET40 and NETSTANDARD 1.3
  • Implement FilterDocument option in all query implementations (full scan document)
  • In Query.And use only one index side with full scan on other
  • Print query execution plan in Query.ToString() (Seek([Age] > 10) and Filter([Name] startsWith "John"))
  • Convert Query.And to Query.Between when possible
  • Add support to Query.Between open/close interval
  • QueryLinq for non resolved linq expression on visitor col.Find(x => x.Id < 10 && x.Name.Length > 10)
  • Support index creation with expressions
  • Support expression on full searchs
  • Better shell error messages in parser with position in error
  • Fix simple lock control (multi-read/single write) in thread/process. Removed reserved lock state
  • Upgrade to VS2017
  • Bugfixes:
  • Upload from local disk on storage
  • DateTime.Now indexed date (milliseconds problem)
  • When query using > or < must use same BsonType (do not returns null values)
  • Remove return Duplicate values in MultiKey indexes

New in LiteDB 3.1.4 (Sep 12, 2017)

  • Fixes:
  • Sign dll to use in GAC
  • Fix decimal index #693

New in LiteDB 3.1.3 (Sep 12, 2017)

  • Bugfix:
  • Fix .csproj to compile .NET 4.x to .NET 3.5

New in LiteDB 3.1.2 (Sep 12, 2017)

  • Bugfix:
  • Nuget/Assembly version fixed to 3.1.2
  • Upgrade to VS2017

New in LiteDB 3.1.1 (Sep 12, 2017)

  • Bugfix:
  • Flush journal file #582
  • Implemented BsonDocument#Copy #577
  • Fix data pagesize #533
  • Fix shrink large database
  • New:
  • Insert bulk method with batch size

New in LiteDB 3.1.0 (Sep 12, 2017)

  • Added:
  • New LiteRepository to access data
  • Support NonPublic members to netstandard
  • Support sync over async in UWP app (to access any directory)
  • Static method do create empty datafile LiteEngine.CreateDatabase
  • Named convetion for collection names when null are used (default typeof(T).Name)
  • Changes:
  • Better way to get id field (preserve precedence order: BsonId, Id or <ClassName>Id)
  • Better message to wrong file detection
  • Bugfix in recovery lock
  • Bugfix that datafile keep opened when an exception occurs during initialize

New in LiteDB 3.0.1 (Sep 12, 2017)

  • Bugfix:
  • Upgrade from v2
  • Changes:
  • Shell now are disconected (each command connect, execute, finalize)
  • Do not support transaction in FileStoage Read/Write operations
  • Better delete operation in FileStorage #483
  • Support build connection string object and pass to LiteDatabase.Ctor
  • Better invalid datafile exception message

New in LiteDB 3.0.0 (Sep 12, 2017)

  • Thread safe AND process safe (support single or multiple instances)
  • Multikey index (support array index values)
  • Faster than ever - compare with SQLite here
  • BsonDocument implements IDictionary, BsonArray implements IList
  • New: Upsert, FindIndex, Query.Not(Query), Query.Where(Func<>)
  • New BsonMapper class: support Fields and NonPublic members
  • Added new LiteEngine class to access data
  • LiteStorage now supports OpenWrite() Stream
  • Update your datafile from v2 using ;upgrade=true in connection string
  • LiteDB support .NET 3.5 and NETStandard 1.4 (Supports UWP, Xamarin, Core, Mono)

New in LiteDB 3.0.0 Beta 3 (Sep 12, 2017)

  • News:
  • Back support for shared mode - multi process (can open multiple instances) - (not supported in NetStandard)
  • Removed checkpoint cache
  • Support Include using string path
  • Datafile upgrade support from v2
  • Support PredicateBuilder
  • Bugfixes

New in LiteDB 3.0.0 Beta 2 (Sep 12, 2017)

  • News:
  • Change compiler do C# 4.0 to be compatible with Unity3D
  • Add Upsert in LiteCollection
  • Add missing LiteDatabase method (RenameCollection, Shrink, DropCollection, GetCollectionNames)
  • BugFix:
  • Fix Unbox in NetStandard

New in LiteDB 3.0.0 Beta (Sep 12, 2017)

  • New Features:
  • Thread Safe - share your LiteDatabase instance across threads
  • MultiKey index - support index in array field
  • Faster than ever - compare results with SQLite here
  • LiteEngine - new simple class to access your documents
  • New checkpoint cache to support large transactions using journal file
  • BsonDocument implements IDictionary, BsonArray implements IList
  • Autocommit disabled support
  • Less 96 bytes per document
  • New: Upsert, FindIndex, Query.Not(Query), Query.Where(Func<>)
  • New BsonMapper class: support Fields and NonPublic members
  • FileStorage now supports OpenWrite("fileId")
  • Virtual index fields -.Index("total", x => x.Products.Sum(p => p.Price))
  • [BsonRefAttribute]
  • Shrink with change password
  • Open datafile in ReadOnly mode
  • LiteDB.Core was removed - LiteDB.dll is now NETStandard 1.4 (Supports UWP, Xamarin, Core, Mono)
  • Changes:
  • Some methods are moved from LiteDatabase to LiteEngine (GetCollectionNames, CollectionExists, DropCollection, RenameCollection, Shrink). To access, use: db.Engine.GetCollectionNames().
  • New datafile version - no update yet

New in LiteDB 2.0.4 (Sep 12, 2017)

  • Changes:
  • Cache checkpoint removed
  • New parser ConnectionString

New in LiteDB 2.0.2 (Sep 12, 2017)

  • Bugfix #284 - Revert connection string regex

New in LiteDB 2.0.1 (Sep 12, 2017)

  • Bugfixes:
  • Better error messages in deserialize #278
  • Connection string supports filename with "
  • Fix detect old version in shell
  • Tests missing password in encrypted datafile
  • Fix shrink bug
  • Adds FileHandler for UWP for better performance

New in LiteDB 2.0.0 (Sep 12, 2017)

  • New features in v2:
  • Portable version: LiteDB.Core (Supports UWP 8.1/10, Xaramin.iOS and Xaramin.Android)
  • Generic data access layer - can use any Stream or you can write your own disk access layer
  • Database encription option (using password= in connection string)
  • New memory cache manager (do not consume too memory in large inserts/updates)
  • Better mapping class from your entity to BsonDocument (like Configurations in EntityFramework)
  • Better cross reference with DbRef mapping (see unit tests examples)
  • Lazy engine load (open datafile only when run a command)
  • Reduce your database size with shrink()
  • Support for Initial Size and Limit Size database (connection string)
  • Complete re-write engine classes width full debug logger
  • Complete stats about data/index usage
  • Dump file to Import/Export your data using shell commands
  • Full documentation for v2 on Wiki
  • See more examples in http://www.litedb.org/
  • Changes:
  • New datafile - to update, check here: https://github.com/mbdavid/LiteDB/wiki/Update-Datafile
  • Transaction API changes (now transaction is a class, use: using(var transaction = db.BeginTrans()) { ... }
  • InsertBulk is only Insert
  • No more datafile version control (still have a UserVersion to dev make your own version control)
  • Removed DbRef<T> class, see: https://github.com/mbdavid/LiteDB/wiki/DbRef

New in LiteDB 2.0.0 RC2 (Sep 12, 2017)

  • New features in RC2:
  • Portable version: NuGet package: Lite.Core that support PCL/UWP
  • New disk access (for safe concurrency) implementation
  • Transactions are back
  • No more ThreadSafe (only ProcessSafe). Always create LiteDatabase instances.
  • Close datafile after each command execution
  • BsonMapper.Global are back
  • RegisterAutoId<T> are back
  • Changes in RC2:
  • To implement new disk read/write access, new datafile version was required.
  • Removed OnModelCreating. Use BsonMapper.Global instance
  • Removed UserVersion update checking. Now UserVersion is only an int stored in header page (update version must be developed in your solution)

New in LiteDB 2.0.0 Beta (Sep 12, 2017)

  • Generic data access layer - can use any Stream or you can write your own disk access layer
  • Better mapping class from your entity to BsonDocument (like Configurations in EntityFramework)
  • Virtual property (Formula) as index field
  • Better cross reference with DbRef mapping (see unit tests examples)
  • ThreadSafe / ProcessSafe
  • Lazy engine load (open datafile only when run a command)
  • Reduce your database size with shrink()
  • Support for Initial Size and Limit Size database (connection string)
  • Complete re-write engine classes width full debug logger
  • See more examples in http://www.litedb.org/

New in LiteDB 1.0.4 (Sep 12, 2017)

  • Bugfix #60 - Incorrect BsonIndex ctor
  • Bugifx #61 - Deserialize nullable values
  • #69 Sign assembly to NuGet

New in LiteDB 1.0.3 (Sep 12, 2017)

  • Bugfix

New in LiteDB 1.0.1 (Sep 12, 2017)

  • Remove full document scan in Find operations - using auto-creation index when there is no field index
  • Bugfix #21 and #29
  • Implements _type when using interfaces/generic object #32 and #27 - thanks to @francoislg
  • Added support to boolean Linq operations, like x => x.IsActive - thanks to Lars Stenberg

New in LiteDB 1.0.0 (Sep 12, 2017)

  • New:
  • New Wiki documentation !! 😃
  • New BsonSerializer removing fastBinaryJson and implement real BSON specification
  • New BsonMapper to get more configurable POCO from/to BsonDocument
  • BsonMapper supports user custom type converter
  • New JsonReader implementation: 4 times faster
  • New ObjectId to be used in Id documents
  • BsonDocument supports only BSON data types as specification
  • Index creation options - remove whitespaces, remove accents, ignore case.
  • [BsonIndex] to mark your entity property to auto create index when query
  • Autogeneration Id for entity Id property
  • Find() can be executed without an index (will execute a full document scan)
  • Index use same MongoDB data type order when CompareTo()
  • FindAll() supports ascending/descending results
  • New Query.Contains
  • Min()/Max() value from an index
  • DbRef<> - a simple class for reference document
  • Changes:
  • Drop collection and drop index improved
  • Removed _master collection - avoid 1 page read
  • Removed WebShell from this repository
  • New file format: v4

New in LiteDB 0.9.0 (Sep 12, 2017)

  • New:
  • New read/write pages to get a very fast disk operations
  • Diferent free spaces on diferent page types (DataPage and IndexPage)
  • Support for Id and <ClassName>Id identity in POCO class
  • New datafile format
  • Changes:
  • Updates on README
  • Bugfix on load ExtendPages

New in LiteDB 0.8.0 (Sep 12, 2017)

  • New:
  • Improve disk writes. More than 200% performance increase on upload files.
  • Improve write ExtendPage - no more recursive
  • Improve performance for search available page
  • Increase MaxDocumentSize to 1MB
  • Static bulk method for insert
  • Added and/or operators for query filter in shell
  • Added "timer" command on shell
  • Minor code fixes
  • Changes:
  • Removed unfinish code. Will be release in future versions
  • Remove MaxFileLength
  • Move shell commands to LiteDB project