erikolson186/zangodb
erikolson186/zangodb has 1,068 GitHub stars and 68 forks. GitHot measured -1 in 7 days. Last checked 2026-11-11 01:13 UTC. Last push 2018-11-09.
MongoDB-like interface for HTML5 IndexedDB
Measured star growth
- in 24h
- Update delayed
- in 7 days
- -1
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
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 = 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.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,670 starspublic-apis/public-apis
A collective list of free APIs
498,063 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
450,822 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,314 stars