Node.js から MongoDB への接続テスト

Node.js から MongoDB への接続テスト

関連記事


結局、前記事(上記関連記事)の「The file system cache of this machine is configured to be greater than 40% of the total memory.」はまだ消えていません。とりあえず、Node.js からデータベースに接続してみようと思います。


Node.js に MongoDB ドライバーを入れる

まず、MongoDB を起動しておきます。ただ、まだ認証できるユーザを作っていませんので、WARNING を出したままで進みます。

>mongod --dbpath c:\mongodb\data


もうひとつコマンドプロンプトを立ち上げ、

f:id:ausnichts:20180118160136p:plain

f:id:ausnichts:20180118160145p:plain

適当なフォルダをつくり、移動して npm init で package.json をつくり、mongodb のドライバーモジュールをインストールします。


MongoDB に接続

以下のチェック用スクリプトは、Quick Start にあります。


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();
});

f:id:ausnichts:20180118160617p:plain

接続されています。


ドキュメントの挿入

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);
  });
}

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();
  });
});

3つのドキュメントを挿入する関数 insertDocument を書き加え呼び出します。


f:id:ausnichts:20180118161750p:plain


ドキュメントの取得

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);
  });
}

全てのドキュメントを取得する関数を書き加えます。


  findDocuments(db, function() {
    client.close();
  });

呼び出しのメソッドを書き換えます。


f:id:ausnichts:20180118163256p:plain

挿入を2回繰り返していますの6個のドキュメントが挿入されています。

といった感じで、リンク先の Quick Start にはドキュメントの選択取得、更新、削除、インデックス化のサンプルコードがあります。