OPTIONS
Note: You are currently viewing version 3.0 of the Node.js driver documentation. Click here for the latest version.
  • Quick Start

Quick Start

This guide will show you how to set up a simple application using Node.js and MongoDB. Its scope is only how to set up the driver and perform the simple CRUD operations. For more in-depth coverage, see the tutorials.

Create the package.json file

First, create a directory where your application will live.

mkdir myproject
cd myproject

Enter the following command and answer the questions to create the initial structure for your new project:

npm init

Next, install the driver dependency.

npm install mongodb --save

You should see NPM download a lot of files. Once it’s done you’ll find all the downloaded packages under the node_modules directory.

Start a MongoDB Server

For complete MongoDB installation instructions, see the manual.

  1. Download the right MongoDB version from MongoDB
  2. Create a database directory (in this case under /data).
  3. Install and start a mongod process.
mongod --dbpath=/data

You should see the mongod process start up and print some status information.

Connect to MongoDB

Create a new app.js file and add the following code to try out some basic CRUD operations using the MongoDB driver.

Add code to connect to the server and the database myproject:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 const db = client.db(dbName);
 client.close();
});

Run your app from the command line with:

node app.js

The application should print Connected successfully to server to the console.

Insert a Document

Add to app.js the following function which uses the insertMany method to add three documents to the documents collection.

const insertDocuments = function(db, callback) {
 // Get the documents collection
 const collection = db.collection('documents');
 // Insert some documents
 collection.insertMany([
 {a : 1}, {a : 2}, {a : 3}
 ], function(err, result) {
 assert.equal(err, null);
 assert.equal(3, result.result.n);
 assert.equal(3, result.ops.length);
 console.log("Inserted 3 documents into the collection");
 callback(result);
 });
}

The insert command returns an object with the following fields:

  • result Contains the result document from MongoDB
  • ops Contains the documents inserted with added _id fields
  • connection Contains the connection used to perform the insert

Add the following code to call the insertDocuments function:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 const db = client.db(dbName);
 insertDocuments(db, function() {
 client.close();
 });
});

Run the updated app.js file:

node app.js

The operation returns the following output:

Connected successfully to server
Inserted 3 documents into the collection

Find All Documents

Add a query that returns all the documents.

const findDocuments = function(db, callback) {
 // Get the documents collection
 const collection = db.collection('documents');
 // Find some documents
 collection.find({}).toArray(function(err, docs) {
 assert.equal(err, null);
 console.log("Found the following records");
 console.log(docs)
 callback(docs);
 });
}

This query returns all the documents in the documents collection. Add the findDocument method to the MongoClient.connect callback:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
 assert.equal(null, err);
 console.log("Connected correctly to server");
 const db = client.db(dbName);
 insertDocuments(db, function() {
 findDocuments(db, function() {
 client.close();
 });
 });
});

Find Documents with a Query Filter

Add a query filter to find only documents which meet the query criteria.

const findDocuments = function(db, callback) {
 // Get the documents collection
 const collection = db.collection('documents');
 // Find some documents
 collection.find({'a': 3}).toArray(function(err, docs) {
 assert.equal(err, null);
 console.log("Found the following records");
 console.log(docs);
 callback(docs);
 });
}

Only the documents which match 'a' : 3 should be returned.

Update a document

The following operation updates a document in the documents collection.

const updateDocument = function(db, callback) {
 // Get the documents collection
 const collection = db.collection('documents');
 // Update document where a is 2, set b equal to 1
 collection.updateOne({ a : 2 }
 , { $set: { b : 1 } }, function(err, result) {
 assert.equal(err, null);
 assert.equal(1, result.result.n);
 console.log("Updated the document with the field a equal to 2");
 callback(result);
 }); 
}

The method updates the first document where the field a is equal to 2 by adding a new field b to the document set to 1. Next, update the callback function from MongoClient.connect to include the update method.

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 const db = client.db(dbName);
 insertDocuments(db, function() {
 updateDocument(db, function() {
 client.close();
 });
 });
});

Remove a document

Remove the document where the field a is equal to 3.

const removeDocument = function(db, callback) {
 // Get the documents collection
 const collection = db.collection('documents');
 // Delete document where a is 3
 collection.deleteOne({ a : 3 }, function(err, result) {
 assert.equal(err, null);
 assert.equal(1, result.result.n);
 console.log("Removed the document with the field a equal to 3");
 callback(result);
 }); 
}

Add the new method to the MongoClient.connect callback function.

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 const db = client.db(dbName);
 insertDocuments(db, function() {
 updateDocument(db, function() {
 removeDocument(db, function() {
 client.close();
 });
 });
 });
});

Index a Collection

Indexes can improve your application’s performance. The following function creates an index on the a field in the documents collection.

const indexCollection = function(db, callback) {
 db.collection('documents').createIndex(
 { "a": 1 },
 null,
 function(err, results) {
 console.log(results);
 callback();
 }
 );
};

Add the indexCollection method to your app:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 const db = client.db(dbName);
 insertDocuments(db, function() {
 indexCollection(db, function() {
 client.close();
 });
 });
});

For more detailed information, see the tutorials.

AltStyle によって変換されたページ (->オリジナル) /