Dexie.js plugin with MongoDB-like API
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Codeship CI status Deps

Mongoify is an addon for Dexie.js, IndexedDB wrapper.

Mongoify tries to provide MongoDB-like* query language and API, but uses promises instead of callbacks.

* MongoDB-like means that Mongoify tries to follow MongoDB where it makes sense, to simplify API and implementation. You are welcome to send PR that increases MongoDB compatibility.

API documentation


You need to open database first:

var db = new Dexie('Database');
db.version(1).stores({ people: '++id, firstname, lastname, age' });;
// Thanks to Dexie, there is not need to wait for database to open,
// you can start working right away

Then you can start inserting objects:

var person = { firstname: 'John', lastname: 'Doe', age: 30 };
db.collection('people').insert(person).then(function() {

    // John is in db now :)

Querying database:

Get all objects:

db.collection('people').find({}).toArray().then(function(people) {
    // empty query returns all objects

Get objects by simple field match:

db.collection('people').find({ age: 30 }).toArray().then(function(people) {
    // people 30 years old

You can also use some of the MongoDB query operators:

db.collection('people').find({ age: { $gte: 23 } }).toArray().then(function(people) {
    // people that are 23 and more years old
Updating objects:
db.collection('people').update({ lastname: 'Doe' }, { age: 10 }).then(function(updatesCount) {
    // all Does are 10 years old now

Using update operators:

db.collection('people').findOne({ skills: { $in: ['html', 'javascript'] }  }, updates).then(function(person) {

    return db.collection('people').update(person, { $push: { skills: 'jquery' } });

}).then(function(updatesCount) {
    // person has jquery skills now

And more


MIT © Yury Solovyov