Class: Admin

Admin

new Admin(){Admin}

Create a new Admin instance (INTERNAL TYPE, do not instantiate directly)

Returns:
collection instance.

Methods

addUser(username, password, options, callback){Promise}

Add a user to the database.

Name Type Default Description
username string

The username.

password string

The password.

options object null optional

Optional settings.

Name Type Default Description
w number | string null optional

The write concern.

wtimeout number null optional

The write concern timeout.

j boolean false optional

Specify a journal write concern.

fsync boolean false optional

Specify a file sync write concern.

customData object null optional

Custom data associated with the user (only Mongodb 2.6 or higher)

roles Array.<object> null optional

Roles associated with the created user (only Mongodb 2.6 or higher)

callback Admin~resultCallback optional

The command result callback

Returns:
Promise if no callback passed
Examples
// An example of how to add a user to the admin database

var MongoClient = require('mongodb').MongoClient,
  test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {

  // Use the admin database for the operation
  var adminDb = db.admin();

  // Add the new user to the admin database
  adminDb.addUser('admin11', 'admin11', function(err, result) {

    // Authenticate using the newly added user
    adminDb.authenticate('admin11', 'admin11', function(err, result) {
      test.ok(result);

      adminDb.removeUser('admin11', function(err, result) {
        test.ok(result);

        db.close();
      });
    });
  });
});




n example of how to remove a user from the admin database

example-class Admin
example-method removeUser
ignore

rts.shouldCorrectlyAddAUserAndRemoveItFromAdminDb = {
tadata: { requires: { topology: 'single' } },

 The actual test we wish to run
st: function(configure, test) {
var db = configure.newDbInstance({w:1}, {poolSize:1});

db.open(function(err, db) {
var MongoClient = require('mongodb').MongoClient,
  test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {

  // Use the admin database for the operation
  var adminDb = db.admin();

  // Add the new user to the admin database
  adminDb.addUser('admin12', 'admin12', function(err, result) {

    // Authenticate using the newly added user
    adminDb.authenticate('admin12', 'admin12', function(err, result) {
      test.ok(result);

      // Remove the user
      adminDb.removeUser('admin12', function(err, result) {
        test.equal(null, err);
        test.equal(true, result);

        // Authenticate using the removed user should fail
        adminDb.authenticate('admin12', 'admin12', function(err, result) {
          test.ok(err != null);
          test.ok(!result);

          db.close();
        });
      })
    });
  });
});
// An example of how to add a user to the admin database using a Promise.

var MongoClient = require('mongodb').MongoClient,
  test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {

  // Use the admin database for the operation
  var adminDb = db.admin();

  // Add the new user to the admin database
  adminDb.addUser('admin11', 'admin11').then(function(result) {

    // Authenticate using the newly added user
    adminDb.authenticate('admin11', 'admin11').then(function(result) {
      test.ok(result);

      adminDb.removeUser('admin11').then(function(result) {
        test.ok(result);

        db.close();
      });
    });
  });
});




n example of how to remove a user from the admin database using a Promise.

example-class Admin
example-method removeUser
ignore

rts.shouldCorrectlyAddAUserAndRemoveItFromAdminDbWithPromises = {
tadata: { requires: { promises:true, topology: 'single' } },

 The actual test we wish to run
st: function(configuration, test) {
var db = configuration.newDbInstance({w:1}, {poolSize:1});

db.open().then(function(db) {
var MongoClient = require('mongodb').MongoClient,
  test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {

  // Use the admin database for the operation
  var adminDb = db.admin();

  // Add the new user to the admin database
  adminDb.addUser('admin12', 'admin12').then(function(result) {

    // Authenticate using the newly added user
    adminDb.authenticate('admin12', 'admin12').then(function(result) {
      test.ok(result);

      // Remove the user
      adminDb.removeUser('admin12').then(function(result) {
        test.equal(true, result);

        // Authenticate using the removed user should fail
        adminDb.authenticate('admin12', 'admin12').then(function(result) {
        }).catch(function(err) {
          db.close();
        });
      })
    });
  });
});
// An example of how to add a user to the admin database using a Generator and the co module.

var MongoClient = require('mongodb').MongoClient,
  co = require('co');
  test = require('assert');

co(function*() {
  var db = yield MongoClient.connect('mongodb://localhost:27017/test');

  // Use the admin database for the operation
  var adminDb = db.admin();

  // Add the new user to the admin database
  yield adminDb.addUser('admin11', 'admin11');

  // Authenticate using the newly added user
  var result = yield adminDb.authenticate('admin11', 'admin11');
  test.ok(result);

  var result = yield adminDb.removeUser('admin11');
  test.ok(result);

  db.close();
});




n example of how to remove a user from the admin database using a Generator and the co module.

example-class Admin
example-method removeUser
ignore

rts.shouldCorrectlyAddAUserAndRemoveItFromAdminDbWithGenerators = {
tadata: { requires: { generators:true, topology: 'single' } },

 The actual test we wish to run
st: function(configuration, test) {
var co = require('co');

co(function*() {
  // Connect
  var db = yield configuration.newDbInstance({w:1}, {poolSize:1}).open();
var MongoClient = require('mongodb').MongoClient,
  co = require('co');
  test = require('assert');

co(function*() {
  var db = yield MongoClient.connect('mongodb://localhost:27017/test');

  // Use the admin database for the operation
  var adminDb = db.admin();

  // Add the new user to the admin database
  yield adminDb.addUser('admin12', 'admin12');

  // Authenticate using the newly added user
  var result = yield adminDb.authenticate('admin12', 'admin12');
  test.ok(result);

  // Remove the user
  var result = yield adminDb.removeUser('admin12');
  test.equal(true, result);

  try {
    // Authenticate using the removed user should fail
    yield adminDb.authenticate('admin12', 'admin12');
  } catch(err) {
    db.close();
  }
});

authenticate(username, password, callback){Promise}

Authenticate a user against the server.

Name Type Description
username string

The username.

password string optional

The password.

callback Admin~resultCallback optional

The command result callback

Deprecated
  • This method will no longer be available in the next major release 3.x as MongoDB 3.6 will only allow auth against users in the admin db and will no longer allow multiple credentials on a socket. Please authenticate using MongoClient.connect with auth credentials.
    Returns:
    Promise if no callback passed
    Examples
    // Authenticate against MongoDB Admin user
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      // Grab a collection object
      var collection = db.collection('test');
    
      // Force the creation of the collection by inserting a document
      // Collections are not created until the first document is inserted
      collection.insertOne({'a':1}, {w:1}, function(err, doc) {
    
        // Use the admin database for the operation
        var adminDb = db.admin();
    
        // Add the new user to the admin database
        adminDb.addUser('admin2', 'admin2', function(err, result) {
    
          // Authenticate using the newly added user
          adminDb.authenticate('admin2', 'admin2', function(err, result) {
            test.ok(result);
    
            adminDb.removeUser('admin2', function(err, result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // Authenticate against MongoDB Admin user using a Promise.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      // Grab a collection object
      var collection = db.collection('test_with_promise');
    
      // Force the creation of the collection by inserting a document
      // Collections are not created until the first document is inserted
      collection.insertOne({'a':1}, {w:1}).then(function(doc) {
    
        // Use the admin database for the operation
        var adminDb = db.admin();
    
        // Add the new user to the admin database
        adminDb.addUser('admin2', 'admin2').then(function(result) {
    
          // Authenticate using the newly added user
          adminDb.authenticate('admin2', 'admin2').then(function(result) {
            test.ok(result);
    
            adminDb.removeUser('admin2').then(function(result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // Authenticate against MongoDB Admin user using a Generator and the co module.
    
    var MongoClient = require('mongodb').MongoClient,
      co = require('co');
      test = require('assert');
    
    co(function*() {
      var db = yield MongoClient.connect('mongodb://localhost:27017/test');
      // Grab a collection object
      var collection = db.collection('test_with_generators');
    
      // Force the creation of the collection by inserting a document
      // Collections are not created until the first document is inserted
      yield collection.insertOne({'a':1}, {w:1});
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      yield adminDb.addUser('admin2', 'admin2');
    
      // Authenticate using the newly added user
      var result = yield adminDb.authenticate('admin2', 'admin2');
      test.ok(result);
    
      var result = yield adminDb.removeUser('admin2')
      test.ok(result);
    
      db.close();
    });

    buildInfo(callback){Promise}

    Retrieve the server information for the current
    instance of the db client

    Name Type Description
    callback Admin~resultCallback optional

    The command result callback

    Returns:
    Promise if no callback passed
    Examples
    // Retrieve the buildInfo for the current MongoDB instance
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin3', 'admin3', function(err, result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin3', 'admin3', function(err, result) {
          test.ok(result);
    
          // Retrive the build information for the MongoDB instance
          adminDb.buildInfo(function(err, info) {
            test.ok(err == null);
    
            adminDb.removeUser('admin3', function(err, result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // Retrieve the buildInfo for the current MongoDB instance using a Promise.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin3', 'admin3').then(function(result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin3', 'admin3').then(function(result) {
          test.ok(result);
    
          // Retrive the build information for the MongoDB instance
          adminDb.buildInfo().then(function(info) {
    
            adminDb.removeUser('admin3').then(function(result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // Retrieve the buildInfo for the current MongoDB instance using a Generator and the co module.
    
    var MongoClient = require('mongodb').MongoClient,
      co = require('co');
      test = require('assert');
    
    co(function*() {
      var db = yield MongoClient.connect('mongodb://localhost:27017/test');
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      yield adminDb.addUser('admin3', 'admin3');
    
      // Authenticate using the newly added user
      var result = yield adminDb.authenticate('admin3', 'admin3');
      test.ok(result);
    
      // Retrive the build information for the MongoDB instance
      yield adminDb.buildInfo();
    
      var result = yield adminDb.removeUser('admin3');
      test.ok(result);
    
      db.close();
    });

    command(command, options, callback){Promise}

    Execute a command

    Name Type Default Description
    command object

    The command hash

    options object null optional

    Optional settings.

    Name Type Default Description
    readPreference ReadPreference | string null optional

    The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).

    maxTimeMS number null optional

    Number of milliseconds to wait before aborting the query.

    callback Admin~resultCallback optional

    The command result callback

    Returns:
    Promise if no callback passed
    Examples
    // Retrieve the buildInfo using the command function
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin4', 'admin4', function(err, result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin4', 'admin4', function(err, result) {
          test.ok(result);
    
          // Retrive the build information using the admin command
          adminDb.command({buildInfo:1}, function(err, info) {
            test.ok(err == null);
    
            adminDb.removeUser('admin4', function(err, result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // Retrieve the buildInfo using the command function using a Promise.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin4', 'admin4').then(function(result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin4', 'admin4').then(function(result) {
          test.ok(result);
    
          // Retrive the build information using the admin command
          adminDb.command({buildInfo:1}).then(function(info) {
    
            adminDb.removeUser('admin4').then(function(result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // Retrieve the buildInfo using the command function using a Generator and the co module.
    
    var MongoClient = require('mongodb').MongoClient,
      co = require('co');
      test = require('assert');
    
    co(function*() {
      var db = yield MongoClient.connect('mongodb://localhost:27017/test');
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      yield adminDb.addUser('admin4', 'admin4');
    
      // Authenticate using the newly added user
      var result = yield adminDb.authenticate('admin4', 'admin4');
      test.ok(result);
    
      // Retrive the build information using the admin command
      yield adminDb.command({buildInfo:1})
    
      var result = yield adminDb.removeUser('admin4');
      test.ok(result);
    
      db.close();
    });

    listDatabases(callback){Promise}

    List the available databases

    Name Type Description
    callback Admin~resultCallback optional

    The command result callback.

    Returns:
    Promise if no callback passed
    Examples
    // An example of listing all available databases.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // List all the available databases
      adminDb.listDatabases(function(err, dbs) {
        test.equal(null, err);
        test.ok(dbs.databases.length > 0);
    
        db.close();
      });
    });
    // An example of listing all available databases. using a Promise.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // List all the available databases
      adminDb.listDatabases().then(function(dbs) {
        test.ok(dbs.databases.length > 0);
    
        db.close();
      });
    });
    // An example of listing all available databases. using a Generator and the co module.
    
    var MongoClient = require('mongodb').MongoClient,
      co = require('co');
      test = require('assert');
    
    co(function*() {
      var db = yield MongoClient.connect('mongodb://localhost:27017/test');
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // List all the available databases
      var dbs = yield adminDb.listDatabases();
      test.ok(dbs.databases.length > 0);
    
      db.close();
    });

    logout(callback){Promise}

    Logout user from server, fire off on all connections and remove all auth info

    Name Type Description
    callback Admin~resultCallback optional

    The command result callback

    Returns:
    Promise if no callback passed
    Examples
    // An example of how add a user, authenticate and logout
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin10', 'admin10', function(err, result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin10', 'admin10', function(err, result) {
          test.ok(result);
    
          // Logout the user
          adminDb.logout(function(err, result) {
            test.equal(true, result);
    
            adminDb.removeUser('admin10', function(err, result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // An example of how add a user, authenticate and logout using a Promise.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin10', 'admin10').then(function(result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin10', 'admin10').then(function(result) {
          test.ok(result);
    
          // Logout the user
          adminDb.logout().then(function(result) {
            test.equal(true, result);
    
            adminDb.removeUser('admin10').then(function(result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // An example of how add a user, authenticate and logout using a Generator and the co module.
    
    var MongoClient = require('mongodb').MongoClient,
      co = require('co');
      test = require('assert');
    
    co(function*() {
      var db = yield MongoClient.connect('mongodb://localhost:27017/test');
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      yield adminDb.addUser('admin10', 'admin10');
    
      // Authenticate using the newly added user
      var result = yield adminDb.authenticate('admin10', 'admin10')
      test.ok(result);
    
      // Logout the user
      var result = yield adminDb.logout();
      test.equal(true, result);
    
      var result = adminDb.removeUser('admin10');
      test.ok(result);
    
      db.close();
    });

    ping(callback){Promise}

    Ping the MongoDB server and retrieve results

    Name Type Description
    callback Admin~resultCallback optional

    The command result callback

    Returns:
    Promise if no callback passed
    Examples
    // An example of how to add a user to the admin database
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin9', 'admin9', function(err, result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin9', 'admin9', function(err, result) {
          test.ok(result);
    
          // Ping the server
          adminDb.ping(function(err, pingResult) {
            test.equal(null, err);
    
            adminDb.removeUser('admin9', function(err, result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // An example of how to add a user to the admin database using a Promise.
    
    var MongoClient = require('mongodb').MongoClient,
      test = require('assert');
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      adminDb.addUser('admin9', 'admin9').then(function(result) {
    
        // Authenticate using the newly added user
        adminDb.authenticate('admin9', 'admin9').then(function(result) {
          test.ok(result);
    
          // Ping the server
          adminDb.ping().then(function(pingResult) {
    
            adminDb.removeUser('admin9').then(function(result) {
              test.ok(result);
    
              db.close();
            });
          });
        });
      });
    });
    // An example of how to add a user to the admin database using a Generator and the co module.
    
    var MongoClient = require('mongodb').MongoClient,
      co = require('co');
      test = require('assert');
    
    co(function*() {
      var db = yield MongoClient.connect('mongodb://localhost:27017/test');
    
      // Use the admin database for the operation
      var adminDb = db.admin();
    
      // Add the new user to the admin database
      yield adminDb.addUser('admin9', 'admin9');
    
      // Authenticate using the newly added user
      var result = yield adminDb.authenticate('admin9', 'admin9');
      test.ok(result);
    
      // Ping the server
      yield adminDb.ping();
    
      var result = yield adminDb.removeUser('admin9');
      test.ok(result);
    
      db.close();
    });

    profilingInfo(callback){Promise}

    Retrieve the current profiling information for MongoDB

    Name Type Description
    callback Admin~resultCallback optional

    The command result callback.

    Deprecated
    • Query the system.profile collection directly.
      Returns:
      Promise if no callback passed
      Examples
      // An example of how to use the profilingInfo
      Use this command to pull back the profiling information currently set for Mongodb var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Grab a collection object var collection = db.collection('test'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted collection.insertOne({'a':1}, {w: 1}, function(doc) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin7', 'admin7', function(err, result) { // Authenticate using the newly added user adminDb.authenticate('admin7', 'admin7', function(err, replies) { // Set the profiling level to all adminDb.setProfilingLevel('all', function(err, level) { // Execute a query command collection.find().toArray(function(err, items) { // Turn off profiling adminDb.setProfilingLevel('off', function(err, level) { // Retrive the profiling information adminDb.profilingInfo(function(err, infos) { test.ok(infos.constructor == Array); test.ok(infos.length >= 1); test.ok(infos[0].ts.constructor == Date); test.ok(infos[0].millis.constructor == Number); adminDb.removeUser('admin7', function(err, result) { test.ok(result); db.close(); }); }); }); }); }); }); }); }); });
      // An example of how to use the profilingInfo using a Promise.
      Use this command to pull back the profiling information currently set for Mongodb var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Grab a collection object var collection = db.collection('test_with_promise'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted collection.insertOne({'a':1}, {w: 1}).then(function(doc) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin7', 'admin7').then(function(result) { // Authenticate using the newly added user adminDb.authenticate('admin7', 'admin7').then(function(replies) { // Set the profiling level to all adminDb.setProfilingLevel('all').then(function(level) { // Execute a query command collection.find().toArray().then(function(items) { // Turn off profiling adminDb.setProfilingLevel('off').then(function(level) { // Retrive the profiling information adminDb.profilingInfo().then(function(infos) { test.ok(infos.constructor == Array); test.ok(infos.length >= 1); test.ok(infos[0].ts.constructor == Date); test.ok(infos[0].millis.constructor == Number); adminDb.removeUser('admin7').then(function(result) { test.ok(result); db.close(); }); }); }); }); }); }); }); }); });
      // An example of how to use the profilingInfo using a Generator and the co module.
      Use this command to pull back the profiling information currently set for Mongodb var MongoClient = require('mongodb').MongoClient, co = require('co'); test = require('assert'); co(function*() { var db = yield MongoClient.connect('mongodb://localhost:27017/test'); // Grab a collection object var collection = db.collection('test_with_generators'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted yield collection.insertOne({'a':1}, {w: 1}); // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database yield adminDb.addUser('admin7', 'admin7'); // Authenticate using the newly added user yield adminDb.authenticate('admin7', 'admin7'); // Set the profiling level to all yield adminDb.setProfilingLevel('all'); // Execute a query command yield collection.find().toArray(); // Turn off profiling yield adminDb.setProfilingLevel('off'); // Retrive the profiling information var infos = yield adminDb.profilingInfo(); test.ok(infos.constructor == Array); test.ok(infos.length >= 1); test.ok(infos[0].ts.constructor == Date); test.ok(infos[0].millis.constructor == Number); var result = yield adminDb.removeUser('admin7'); test.ok(result); db.close(); });

      profilingLevel(callback){Promise}

      Retrieve the current profiling Level for MongoDB

      Name Type Description
      callback Admin~resultCallback optional

      The command result callback

      Returns:
      Promise if no callback passed
      Examples
      // Retrieve the current profiling level set for the MongoDB instance
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Grab a collection object
        var collection = db.collection('test');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        collection.insertOne({'a':1}, {w: 1}, function(err, doc) {
      
          // Use the admin database for the operation
          var adminDb = db.admin();
      
          // Add the new user to the admin database
          adminDb.addUser('admin5', 'admin5', function(err, result) {
      
            // Authenticate using the newly added user
            adminDb.authenticate('admin5', 'admin5', function(err, replies) {
      
              // Retrive the profiling level
              adminDb.profilingLevel(function(err, level) {
      
                adminDb.removeUser('admin5', function(err, result) {
                  test.ok(result);
      
                  db.close();
                });
              });
            });
          });
        });
      });
      // Retrieve the current profiling level set for the MongoDB instance using a Promise.
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Grab a collection object
        var collection = db.collection('test_with_promise');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        collection.insertOne({'a':1}, {w: 1}).then(function(doc) {
      
          // Use the admin database for the operation
          var adminDb = db.admin();
      
          // Add the new user to the admin database
          adminDb.addUser('admin5', 'admin5').then(function(result) {
      
            // Authenticate using the newly added user
            adminDb.authenticate('admin5', 'admin5').then(function(replies) {
      
              // Retrive the profiling level
              adminDb.profilingLevel().then(function(level) {
      
                adminDb.removeUser('admin5').then(function(result) {
                  test.ok(result);
      
                  db.close();
                });
              });
            });
          });
        });
      });
      // Retrieve the current profiling level set for the MongoDB instance using a Generator and the co module.
      
      var MongoClient = require('mongodb').MongoClient,
        co = require('co');
        test = require('assert');
      
      co(function*() {
        var db = yield MongoClient.connect('mongodb://localhost:27017/test');
      
        // Grab a collection object
        var collection = db.collection('test_with_generators');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        yield collection.insertOne({'a':1}, {w: 1});
      
        // Use the admin database for the operation
        var adminDb = db.admin();
      
        // Add the new user to the admin database
        yield adminDb.addUser('admin5', 'admin5');
      
        // Authenticate using the newly added user
        yield adminDb.authenticate('admin5', 'admin5');
      
        // Retrive the profiling level
        yield adminDb.profilingLevel();
      
        var result = yield adminDb.removeUser('admin5');
        test.ok(result);
      
        db.close();
      });

      removeUser(username, options, callback){Promise}

      Remove a user from a database

      Name Type Default Description
      username string

      The username.

      options object null optional

      Optional settings.

      Name Type Default Description
      w number | string null optional

      The write concern.

      wtimeout number null optional

      The write concern timeout.

      j boolean false optional

      Specify a journal write concern.

      fsync boolean false optional

      Specify a file sync write concern.

      callback Admin~resultCallback optional

      The command result callback

      Returns:
      Promise if no callback passed
      Examples
      // An example of how to remove a user from the admin database
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Use the admin database for the operation
        var adminDb = db.admin();
      
        // Add the new user to the admin database
        adminDb.addUser('admin12', 'admin12', function(err, result) {
      
          // Authenticate using the newly added user
          adminDb.authenticate('admin12', 'admin12', function(err, result) {
            test.ok(result);
      
            // Remove the user
            adminDb.removeUser('admin12', function(err, result) {
              test.equal(null, err);
              test.equal(true, result);
      
              // Authenticate using the removed user should fail
              adminDb.authenticate('admin12', 'admin12', function(err, result) {
                test.ok(err != null);
                test.ok(!result);
      
                db.close();
              });
            })
          });
        });
      });
      // An example of how to remove a user from the admin database using a Promise.
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Use the admin database for the operation
        var adminDb = db.admin();
      
        // Add the new user to the admin database
        adminDb.addUser('admin12', 'admin12').then(function(result) {
      
          // Authenticate using the newly added user
          adminDb.authenticate('admin12', 'admin12').then(function(result) {
            test.ok(result);
      
            // Remove the user
            adminDb.removeUser('admin12').then(function(result) {
              test.equal(true, result);
      
              // Authenticate using the removed user should fail
              adminDb.authenticate('admin12', 'admin12').then(function(result) {
              }).catch(function(err) {
                db.close();
              });
            })
          });
        });
      });
      // An example of how to remove a user from the admin database using a Generator and the co module.
      
      var MongoClient = require('mongodb').MongoClient,
        co = require('co');
        test = require('assert');
      
      co(function*() {
        var db = yield MongoClient.connect('mongodb://localhost:27017/test');
      
        // Use the admin database for the operation
        var adminDb = db.admin();
      
        // Add the new user to the admin database
        yield adminDb.addUser('admin12', 'admin12');
      
        // Authenticate using the newly added user
        var result = yield adminDb.authenticate('admin12', 'admin12');
        test.ok(result);
      
        // Remove the user
        var result = yield adminDb.removeUser('admin12');
        test.equal(true, result);
      
        try {
          // Authenticate using the removed user should fail
          yield adminDb.authenticate('admin12', 'admin12');
        } catch(err) {
          db.close();
        }
      });

      replSetGetStatus(callback){Promise}

      Get ReplicaSet status

      Name Type Description
      callback Admin~resultCallback optional

      The command result callback.

      Returns:
      Promise if no callback passed
      Examples
      // Retrieve the current replicaset status if the server is running as part of a replicaset
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Grab a collection object
        var collection = db.collection('test');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        collection.insertOne({'a':1}, {w: 1}, function(err, doc) {
      
          // Use the admin database for the operation
          var adminDb = db.admin();
      
          // Add the new user to the admin database
          adminDb.addUser('admin14', 'admin14', function(err, result) {
            test.equal(null, err);
            test.ok(result != null);
      
            // Authenticate using the newly added user
            adminDb.authenticate('admin14', 'admin14', function(err, result) {
              test.equal(null, err);
              test.equal(true, result);
      
              // Retrive the server Info, returns error if we are not
              // running a replicaset
              adminDb.replSetGetStatus(function(err, info) {
      
                adminDb.removeUser('admin14', function(err, result) {
                  test.equal(null, err);
                  test.ok(result);
      
                  db.close();
                });
              })
            });
          });
        });
      });
      // Retrieve the current replicaset status if the server is running as part of a replicaset using a Generator and the co module.
      
      var MongoClient = require('mongodb').MongoClient,
        co = require('co');
        test = require('assert');
      
      co(function*() {
        var db = yield MongoClient.connect('mongodb://localhost:27017/test');
      
        // Grab a collection object
        var collection = db.collection('test_with_generators');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        yield collection.insertOne({'a':1}, {w: 1});
      
        // Use the admin database for the operation
        var adminDb = db.admin();
      
        // Retrive the server Info, returns error if we are not
        // running a replicaset
        yield adminDb.replSetGetStatus();
      
        db.close();
      });
      // Retrieve the current replicaset status if the server is running as part of a replicaset using a Promise.
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
        // Grab a collection object
        var collection = db.collection('test_with_promise');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        collection.insertOne({'a':1}, {w: 1}).then(function(doc) {
          // Use the admin database for the operation
          var adminDb = db.admin();
      
          // Add the new user to the admin database
          adminDb.addUser('admin14', 'admin14').then(function(result) {
            test.ok(result != null);
      
            // Authenticate using the newly added user
            adminDb.authenticate('admin14', 'admin14', {w:1}).then(function(result) {
              test.equal(true, result);
      
              // Retrive the server Info, returns error if we are not
              // running a replicaset
              adminDb.replSetGetStatus().then(function(info) {
      
                adminDb.removeUser('admin14').then(function(result) {
                  test.ok(result);
      
                  db.close();
                });
              }).catch(function(err) {
                // // console.dir(err)
              });
            }).catch(function(err) {
              // // console.dir(err)
            });
          });
        });
      });

      serverInfo(callback){Promise}

      Retrieve the server information for the current
      instance of the db client

      Name Type Description
      callback Admin~resultCallback optional

      The command result callback

      Returns:
      Promise if no callback passed

      serverStatus(callback){Promise}

      Retrieve this db's server status.

      Name Type Description
      callback Admin~resultCallback optional

      The command result callback

      Returns:
      Promise if no callback passed
      Examples
      // Retrieve the current server Info
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Grab a collection object
        var collection = db.collection('test');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        collection.insertOne({'a':1}, {w: 1}, function(err, doc) {
      
          // Use the admin database for the operation
          var adminDb = db.admin();
      
          // Add the new user to the admin database
          adminDb.addUser('admin13', 'admin13', function(err, result) {
      
            // Authenticate using the newly added user
            adminDb.authenticate('admin13', 'admin13', function(err, result) {
      
              // Retrive the server Info
              adminDb.serverStatus(function(err, info) {
                test.equal(null, err);
                test.ok(info != null);
      
                adminDb.removeUser('admin13', function(err, result) {
                  test.ok(result);
      
                  db.close();
                });
              });
            });
          });
        });
      });
      // Retrieve the current server Info using a Promise.
      
      var MongoClient = require('mongodb').MongoClient,
        test = require('assert');
      MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      
        // Grab a collection object
        var collection = db.collection('test_with_promise');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        collection.insertOne({'a':1}, {w: 1}).then(function(doc) {
      
          // Use the admin database for the operation
          var adminDb = db.admin();
      
          // Add the new user to the admin database
          adminDb.addUser('admin13', 'admin13').then(function(result) {
      
            // Authenticate using the newly added user
            adminDb.authenticate('admin13', 'admin13').then(function(result) {
      
              // Retrive the server Info
              adminDb.serverStatus().then(function(info) {
                test.ok(info != null);
      
                adminDb.removeUser('admin13').then(function(result) {
                  test.ok(result);
      
                  db.close();
                });
              });
            });
          });
        });
      });
      // Retrieve the current server Info using a Generator and the co module.
      
      var MongoClient = require('mongodb').MongoClient,
        co = require('co');
        test = require('assert');
      
      co(function*() {
        var db = yield MongoClient.connect('mongodb://localhost:27017/test');
      
        // Grab a collection object
        var collection = db.collection('test_with_generators');
      
        // Force the creation of the collection by inserting a document
        // Collections are not created until the first document is inserted
        yield collection.insertOne({'a':1}, {w: 1});
      
        // Use the admin database for the operation
        var adminDb = db.admin();
      
        // Add the new user to the admin database
        yield adminDb.addUser('admin13', 'admin13');
      
        // Authenticate using the newly added user
        yield adminDb.authenticate('admin13', 'admin13');
      
        // Retrive the server Info
        var info = yield adminDb.serverStatus();
        test.ok(info != null);
      
        var result = yield adminDb.removeUser('admin13');
        test.ok(result);
      
        db.close();
      });

      setProfilingLevel(level, callback){Promise}

      Set the current profiling level of MongoDB

      Name Type Description
      level string

      The new profiling level (off, slow_only, all).

      callback Admin~resultCallback optional

      The command result callback.

      Returns:
      Promise if no callback passed
      Examples
      // An example of how to use the setProfilingInfo
      Use this command to set the Profiling level on the MongoDB server var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Grab a collection object var collection = db.collection('test'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted collection.insertOne({'a':1}, {w: 1}, function(err, doc) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin6', 'admin6', function(err, result) { // Authenticate using the newly added user adminDb.authenticate('admin6', 'admin6', function(err, replies) { // Set the profiling level to only profile slow queries adminDb.setProfilingLevel('slow_only', function(err, level) { // Retrive the profiling level and verify that it's set to slow_only adminDb.profilingLevel(function(err, level) { test.equal('slow_only', level); // Turn profiling off adminDb.setProfilingLevel('off', function(err, level) { // Retrive the profiling level and verify that it's set to off adminDb.profilingLevel(function(err, level) { test.equal('off', level); // Set the profiling level to log all queries adminDb.setProfilingLevel('all', function(err, level) { // Retrive the profiling level and verify that it's set to all adminDb.profilingLevel(function(err, level) { test.equal('all', level); // Attempt to set an illegal profiling level adminDb.setProfilingLevel('medium', function(err, level) { test.ok(err instanceof Error); test.equal("Error: illegal profiling level value medium", err.message); adminDb.removeUser('admin6', function(err, result) { test.ok(result); db.close(); }); }); }) }); }) }); }) }); }); }); }); });
      // An example of how to use the setProfilingInfo using a Promise.
      Use this command to set the Profiling level on the MongoDB server var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Grab a collection object var collection = db.collection('test_with_promise'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted collection.insertOne({'a':1}, {w: 1}).then(function(doc) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin6', 'admin6').then(function(result) { // Authenticate using the newly added user adminDb.authenticate('admin6', 'admin6').then(function(replies) { // Set the profiling level to only profile slow queries adminDb.setProfilingLevel('slow_only').then(function(level) { // Retrive the profiling level and verify that it's set to slow_only adminDb.profilingLevel().then(function(level) { test.equal('slow_only', level); // Turn profiling off adminDb.setProfilingLevel('off').then(function(level) { // Retrive the profiling level and verify that it's set to off adminDb.profilingLevel().then(function(level) { test.equal('off', level); // Set the profiling level to log all queries adminDb.setProfilingLevel('all').then(function(level) { // Retrive the profiling level and verify that it's set to all adminDb.profilingLevel().then(function(level) { test.equal('all', level); // Attempt to set an illegal profiling level adminDb.setProfilingLevel('medium').then(function(level) { }).catch(function(err) { test.ok(err instanceof Error); test.equal("Error: illegal profiling level value medium", err.message); adminDb.removeUser('admin6').then(function(result) { test.ok(result); db.close(); }); }); }) }); }) }); }) }); }); }); }); });
      // An example of how to use the setProfilingInfo using a Generator and the co module.
      Use this command to set the Profiling level on the MongoDB server var MongoClient = require('mongodb').MongoClient, co = require('co'); test = require('assert'); co(function*() { var db = yield MongoClient.connect('mongodb://localhost:27017/test'); // Grab a collection object var collection = db.collection('test_with_generators'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted yield collection.insertOne({'a':1}, {w: 1}); // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database yield adminDb.addUser('admin6', 'admin6'); // Authenticate using the newly added user yield adminDb.authenticate('admin6', 'admin6'); // Set the profiling level to only profile slow queries yield adminDb.setProfilingLevel('slow_only') // Retrive the profiling level and verify that it's set to slow_only var level = yield adminDb.profilingLevel(); test.equal('slow_only', level); // Turn profiling off yield adminDb.setProfilingLevel('off'); // Retrive the profiling level and verify that it's set to off var level = yield adminDb.profilingLevel(); test.equal('off', level); // Set the profiling level to log all queries yield adminDb.setProfilingLevel('all'); // Retrive the profiling level and verify that it's set to all var level = yield adminDb.profilingLevel(); test.equal('all', level); try { // Attempt to set an illegal profiling level yield adminDb.setProfilingLevel('medium'); } catch(err) { test.ok(err instanceof Error); test.equal("Error: illegal profiling level value medium", err.message); var result = yield adminDb.removeUser('admin6'); test.ok(result); db.close(); } });

      validateCollection(collectionName, options, callback){Promise}

      Validate an existing collection

      Name Type Default Description
      collectionName string

      The name of the collection to validate.

      options object null optional

      Optional settings.

      callback Admin~resultCallback optional

      The command result callback.

      Returns:
      Promise if no callback passed
      Examples
      // An example of how to use the validateCollection command
      Use this command to check that a collection is valid (not corrupt) and to get various statistics. var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Grab a collection object var collection = db.collection('test'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted collection.insertOne({'a':1}, {w: 1}, function(err, doc) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin8', 'admin8', function(err, result) { // Authenticate using the newly added user adminDb.authenticate('admin8', 'admin8', function(err, replies) { // Validate the 'test' collection adminDb.validateCollection('test', function(err, doc) { test.equal(null, err); adminDb.removeUser('admin8', function(err, result) { test.ok(result); db.close(); }); }); }); }); }); }); n example of how to add a user to the admin database example-class Admin example-method ping ignore rts.shouldCorrectlyPingTheMongoDbInstance = { tadata: { requires: { topology: 'single' } }, The actual test we wish to run st: function(configure, test) { var db = configure.newDbInstance({w:1}, {poolSize:1}); db.open(function(err, db) { var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin9', 'admin9', function(err, result) { // Authenticate using the newly added user adminDb.authenticate('admin9', 'admin9', function(err, result) { test.ok(result); // Ping the server adminDb.ping(function(err, pingResult) { test.equal(null, err); adminDb.removeUser('admin9', function(err, result) { test.ok(result); db.close(); }); }); }); }); });
      // An example of how to use the validateCollection command using a Promise.
      Use this command to check that a collection is valid (not corrupt) and to get various statistics. var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Grab a collection object var collection = db.collection('test_with_promise'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted collection.insertOne({'a':1}, {w: 1}).then(function(doc) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin8', 'admin8').then(function(result) { // Authenticate using the newly added user adminDb.authenticate('admin8', 'admin8').then(function(replies) { // Validate the 'test' collection adminDb.validateCollection('test_with_promise').then(function(doc) { // Remove the user adminDb.removeUser('admin8').then(function(result) { test.ok(result); db.close(); }); }); }); }); }); }); n example of how to add a user to the admin database using a Promise. example-class Admin example-method ping ignore rts.shouldCorrectlyPingTheMongoDbInstanceWithPromises = { tadata: { requires: { promises:true, topology: 'single' } }, The actual test we wish to run st: function(configuration, test) { var db = configuration.newDbInstance({w:1}, {poolSize:1}); db.open().then(function(db) { var MongoClient = require('mongodb').MongoClient, test = require('assert'); MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database adminDb.addUser('admin9', 'admin9').then(function(result) { // Authenticate using the newly added user adminDb.authenticate('admin9', 'admin9').then(function(result) { test.ok(result); // Ping the server adminDb.ping().then(function(pingResult) { adminDb.removeUser('admin9').then(function(result) { test.ok(result); db.close(); }); }); }); }); });
      // An example of how to use the validateCollection command using a Generator and the co module.
      Use this command to check that a collection is valid (not corrupt) and to get various statistics. var MongoClient = require('mongodb').MongoClient, co = require('co'); test = require('assert'); co(function*() { var db = yield MongoClient.connect('mongodb://localhost:27017/test'); // Grab a collection object var collection = db.collection('test_with_generators'); // Force the creation of the collection by inserting a document // Collections are not created until the first document is inserted yield collection.insertOne({'a':1}, {w: 1}); // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database yield adminDb.addUser('admin8', 'admin8'); // Authenticate using the newly added user yield adminDb.authenticate('admin8', 'admin8'); // Validate the 'test' collection var doc = yield adminDb.validateCollection('test_with_generators'); test.ok(doc != null); var result = yield adminDb.removeUser('admin8') test.ok(result); db.close(); }); n example of how to add a user to the admin database using a Generator and the co module. example-class Admin example-method ping ignore rts.shouldCorrectlyPingTheMongoDbInstanceWithGenerators = { tadata: { requires: { generators:true, topology: 'single' } }, The actual test we wish to run st: function(configuration, test) { var co = require('co'); co(function*() { // Connect var db = yield configuration.newDbInstance({w:1}, {poolSize:1}).open(); var MongoClient = require('mongodb').MongoClient, co = require('co'); test = require('assert'); co(function*() { var db = yield MongoClient.connect('mongodb://localhost:27017/test'); // Use the admin database for the operation var adminDb = db.admin(); // Add the new user to the admin database yield adminDb.addUser('admin9', 'admin9'); // Authenticate using the newly added user var result = yield adminDb.authenticate('admin9', 'admin9'); test.ok(result); // Ping the server yield adminDb.ping(); var result = yield adminDb.removeUser('admin9'); test.ok(result); db.close(); });

      Type Definitions

      resultCallback(error, result)

      The callback format for results

      Name Type Description
      error MongoError

      An error instance representing the error during the execution.

      result object

      The result object if the command was executed successfully.