implements the Mongo wire protocol and adapts queries to use Postgres jsonb.
npm install pgmongo

Replace MongoDB with PosgreSQL
This implements the MongoDB wire protocol and adapts queries to work with a PostgreSQL database using jsonb fields.
I've tested it with Keystone.js and it seemed to work reasonably well.
bash
npm install -g pgmongo
pgmongo
`
This will start a mongo-like server on port 27017. If you already have mongo running on your machine you can start it on a different port with the following.
`bash
pgmongo localhost 27018
`Supported Features
* listing/creating/dropping collections
* find (including sorting, skip and offset)
* count, distinct
* update (including support for upserting)
* insert (including batch insertion)
* deletion
* creating and listing basic indexes
* most custom parameters like $gt, $exists, $regex, $push, $set, $unset, etc.
See this repo for the full list
* admin commands (returns mostly stubbed/fake data)Current status
It's not production ready yet, but definitely working enough to play around with or use in basic apps.
Currently passes 190 of the 916 core mongo jstests.Example Query Conversions
`
db.createCollection('users') -> CREATE TABLE IF NOT EXISTS "users" (data jsonb)
db.users.find({ lastLogin: { $lte: '2016' } }) -> SELECT data FROM "users" WHERE data->>'lastLogin'<='2016'
db.users.update({}, { $set: { active: true } }) -> UPDATE "users" SET data = jsonb_set(data,'{active}','true'::jsonb)
db.users.find({}, { firstName: 1 } ) -> SELECT jsonb_build_object('firstName', data->'firstName', '_id', data->'_id') as data FROM "users"
db.blogs.insert({ title: 'first post', comments: [] }) -> INSERT INTO "blogs" VALUES ('{"_id":"5b45b641eb4bd93896d57888","title":"first post","comments":[]}'::jsonb)
db.blogs.remove({ 'state.trash': true }) -> DELETE FROM "blogs" WHERE data->'state'->'trash'='true'::jsonb
``