A Delphi driver to access a mongoDB server.
It uses jsonDoc.pas to store JSON documents. IJSONDocument
maps variables onto Delphi variables of type Variant, which resembles
the loose typing of JavaScript.
There are three main units and two main classes to enable access to a mongo DB server:
Declares IJSONDocument
and related interfaces, and the JSON
function to create instances, optionally populated with data. IJSONDocument
instances hold the data of a 'document', the basic unit of data mongoDB works with.
A variable of type Variant can hold an interface reference to an instance, which enables embedding documents.
Use Variant arrays (or IJSONArray
) to store arrays of values in a document.
See also https://github.com/stijnsanders/jsonDoc#jsondoc
Declares the LoadBSON
and SaveBSON
procedures.
Also declares the IBSONDocArray
interface which can improve processing arrays of embedded documents by keeping a reference to the underlying data stream, and only loading one document at a time, possibly re-using allocated memory for the same keys if the documents have a similar structure.
Attention: take care to keep the TStream instance in existance for as long as you're planning to use the linked IBSONDocArray
instance. Failure to do so can lead to privileged instruction or access violation errors.
Use an object of class TMongoWire
to connection to a mongoDB server. It supports getting single items, performing inserts, updates and deletes.
Use objects of class TMongoWireQuery
to query to a mongoDB server. It handles the cursor and subsequent requests to the server to get more data when needed.
Use function mongoObjectId
to construct a new MongoDB-style id value.
Use procedure MongoWireAuthenticate
to authenticate a newly connected TMongoWire
instance. As of version 3.0 MongoDB uses a slightly modified SCRAM-SHA-1
to vastly improve security with access control. (Use mongoAuth.pas
for MongoDB versions prior to 3.0.)
Use TMongoStream
to load and store files in MongoDB. Internally .files
and .chunks
collections are used to store the data.
See the example projects for straight-forward demonstration applications that use TMongoWire.