ZangoDB is a MongoDB-like interface for HTML5 IndexedDB that supports most of the familiar filtering, projection, sorting, updating and aggregation features of MongoDB, for usage in the web browser.
Example
let db = 'mydb' people: 'age' ;let people = db; let docs = name: 'Frank' age: 20 name: 'Thomas' age: 33 name: 'Todd' age: 33 name: 'John' age: 28 name: 'Peter' age: 33 name: 'George' age: 28 ; people;
Which outputs:
doc: { count: 3, age: 33 }
doc: { count: 1, age: 28 }
Installation
ZangoDB is available as an npm package, and the web-browser build can be downloaded here or embedded:
For certain web browsers, such as Internet Explorer, the Babel polyfill is required and must be loaded before ZangoDB:
ZangoDB then can be accessed using the global variable zango
.
To install ZangoDB for usage with node:
$ npm install zangodb
In both cases, an implementation of IndexedDB is required. For environments without a native implementation of IndexedDB, Fake IndexedDB can be used:
globalindexedDB = ;globalIDBKeyRange = ;
Document Language Operators
Filter Operators
The following filter operators are supported: $and
, $or
, $not
, $nor
, $eq
, $ne
, $gt
, $gte
, $lt
, $lte
, $in
, $nin
, $elemMatch
, $regex
, and $exists
.
Expression Operators
Expression operators can be used in combination with the group and projection operators.
The following expression operators are supported: $literal
, $add
, $subtract
, $multiply
, $divide
, $mod
, $abs
, $ceil
, $floor
, $ln
, $log10
, $pow
, $sqrt
, $trunc
, $concat
, $toLower
, $toUpper
, $concatArrays
, $dayOfMonth
, $year
, $month
, $hour
, $minute
, $second
, and $millisecond
.
Update Operators
The following update operators are supported: $set
, $unset
, $rename
, $inc
, $mul
, $min
, $max
, $push
, $pop
, $pullAll
, $pull
, and $addToSet
.
Group Operators
The following group operators are supported: $sum
, $avg
, $min
, $max
, $push
, and $addToSet
.
Aggregation Pipeline Stages
The following aggregation pipeline stages are supported: $match
, $project
, $group
, $unwind
, $sort
, $skip
, and $limit
.
License
MIT, please view the LICENSE file.