- ×
MongoDB-like interface for HTML5 IndexedDB
Filed under dataZangoDB 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 = new zango.Db('mydb', { people: ['age'] }); let people = db.collection('people'); 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.insert(docs).then(() => { return people.find({ name: { $ne: 'John' }, age: { $gt: 20 } }).group({ _id: { age: '$age' }, count: { $sum: 1 } }).project({ _id: 0, age: '$_id.age' }).sort({ age: -1 }).forEach(doc => console.log('doc:', doc)); }).catch(error => console.error(error));
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:
<script src="https://unpkg.com/zangodb@latest/dist/zangodb.min.js"></script>
For certain web browsers, such as Internet Explorer, the Babel polyfill is required and must be loaded before ZangoDB:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js"></script>
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:
global.indexedDB = require('fake-indexeddb'); global.IDBKeyRange = require('fake-indexeddb/lib/FDBKeyRange');
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.