Document
A Document is a single piece of stored data. Each document is stored within a Collection
, and has a unique ID within that Collection. There are two document types: OwnedDocument
and BorrowedDocument
. The View::map()
function takes a BorrowedDocument
, but nearly every other API utilizes OwnedDocument
.
When a document is updated, BonsaiDb will check that the revision information passed matches the currently stored information. If not, a conflict error will be returned. This simple check ensures that if two writers try to update the document simultaneously, one will succeed and the other will receive an error.
Serializable Collections
BonsaiDb provides the SerializedCollection
trait, which allows automatic serialization and deserialization in many sitautions. When using Document::contents()
function, the document is serialized and deserialized by the format returned from SerializedCollection::format()
.
The CollectionDocument<T>
type provides convenience methods of interacting with serializable documents.
Default serialization of Serde-compatible types
BonsaiDb provides a convenience trait for Serde-compatible data types: DefaultSerialization
. This empty trait can be implemented on any collection to have BonsaiDb provide its preferred serialization format, Pot.
Raw Collections
If you would prefer to manually manage the data stored inside of a Document, you can directly manage the contents
field. BonsaiDb will not interact with the contents
of a Document. Only code that you write will parse or update the stored data.