MongoDB Session Store for ExpressJS

MongoDB Session Storage for ExpressJS

This module is an addon for ExpressJS that adds a new Session Storage device.

npm install

The standard usage, is to just pass an instantiated MongoStore instance to the session plugin.

var xp = require('express'),
    MongoStore = require('express-session-mongo');

var app = xp.createServer();

    app.use(xp.session({ store: new MongoStore() }));

You can also pass several options to the constructor to tweak your session store:

  • db - The name of the db to use, defaults to: express-sessions
  • ip - The IP address of the server to connect to, defaults to:
  • port - The Port to connect to, defaults to: 27017
  • collection - The collection to save it's data to, defaults to: sessions
  • server - A custom mongo Server instance (this overides db, ip & port):
  • fsync - Confirm writes after they have been flushed to disk, default: false.
  • native_parser - Use BSON native parser, defaults to: true.
  • username - The username for the database.
  • password - The password which corresponds to the database
  • authenciated - An err-first callback that fires once connected and an auth attempt is made.
var CustomServer = new Server(123.456.789.1, 12345, { auto_reconnect: true }, {});
app.use(xp.session({ store: new MongoStore({ server: CustomServer }) }));

MongoDB 2.2 and above supports doing this via an index, see To enable this, run

db.sessions.ensureIndex( { "lastAccess": 1 }, { expireAfterSeconds: 3600 } )

Mongo will now remove all sessions older than an hour (every 60 seconds).

  1. Removes connect as a dependency
  2. Adds fsync and native_parser options to constructor
  3. Removes manual session cleanup cleanup code (see Removing stale sessions below)

Licensed under my standard BSD license.