Node.jsからMongoDBにアクセスするまでに意外と手間取ってしまった。。
忘れないように記録しておく。
インストール
ちなみにOSは、Windows 10
- Node.jsをインストーラの指示に従ってインストール(v18.0.0)
- MongoDBをインストーラの指示に従ってインストール(v5.08)
⇒インストール時、「Install MongoD as a Service」にチェック
(MongoDB ServiceサービスがWindowsに登録される)
⇒途中「MongoDB Compass」にチェックをつけておく
(インストール後MongoDB compassが立ち上がる)
⇒インストール後、mongoのパスを通しておく
MongoDBにデータ登録
- コマンドプロンプトを開いて、mongoシェルを起動
コマンドプロンプト
cmd > mongo
- データベース:myDBを作成
コマンドプロンプト
> use myDB
switched to db myDB
- コレクション:tableを作成
コマンドプロンプト
> db.createCollection('table')
{"ok" : 1 }
- 適当なデータを登録
コマンドプロンプト
> db.table.insertOne({name:"taro",age:10})
⇒MongoDB Compassでデータが登録されていることを確認する
Node.jsの準備
- どこかに適当なフォルダをつくる
- コマンドプロンプトを開き、上記で作ったフォルダに移動して、npmでmongodbをインストール
コマンドプロンプト
cmd > cd (作成したフォルダのパス)
cmd > npm install mongodb
Node.jsからMongoDBにアクセス
上記で作ったフォルダに、app.jsを作る
app.js
const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
const url= 'mongodb://127.0.0.1:27017';
const client = new MongoClient(url);
async function run() {
try {
await client.connect();
const database = client.db('myDB');
const table = database.collection('table');
const query = { name: 'taro' };
const data = await table.findOne(query);
console.log(data);
} finally {
await client.close();
}
}
run().catch(console.dir);
あとはコマンドプロンプトから node app.jsを実行すればOK
メモ
- URLの記述が多くのサイトではmongodb://localhost:27017と書いてあったのにそれではつながらない。localhostを0.0.0.0としたり、127.0.0.1としたら大丈夫だった。そこっ!?
⇒ファイアウォールとかほかの設定見直しでずいぶん時間がかかってしまった。。 - MongoDBのサービスは、Windowsの場合インストーラでチェックを付ければ手動でサービスを登録する必要はない。コマンドプロンプトでmongoと打つのは、mongoシェル(?)を呼び出すためのもので、MongoDBの起動とは関係ない。(当たり前?)
- MongoDB Compassは使いやすい!いいね!