陳鍾誠

Version 1.0

使用 Node.js 存取 MongoDB

您若要在 node.js 當中存取 mongoDB 的資料,必須先用 npm 安裝 mongoDB 的套件。

npm install mongodb

程式範例: mongotest.js

參考: https://mongodb.github.io/node-mongodb-native/api-articles/nodekoarticle1.html

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/examdb", function(err, db) {
  if(err) { return console.dir(err); }

  var collection = db.collection('Q');
  var docs = [{ type:"word", q:"he=他"}, { type:"word", q:"she=她"}, { type:"word", q:"it=它"} ];

  collection.insert(docs, {w:1}, function(err, result) { // success!

    collection.find().toArray(function(err, items) {
        console.log("items=%j", items);
        db.close();
    });
  });
});

執行結果:

nqu-192-168-61-142:KoaExam mac020$ node mongotest
items=[{"_id":"5716e82ea6c866eb02ffe700","type":"word","q":"he=他"},{"_id":"5716e82ea6c866eb02ffe701","type":"word","q":"she=她"},{"_id":"5716e82ea6c866eb02ffe702","type":"word","q":"it=它"}]

採用 yield 的寫法

檔案: comongotest.js

var co = require("co");

var MongoClient = require('mongodb').MongoClient;

co(function*() {
  var db = yield MongoClient.connect('mongodb://localhost:27017/examdb');
  var collection = db.collection('Q');
  var result = yield collection.insertMany([{ type:"word", q:"he=他"}, { type:"word", q:"she=她"}, { type:"word", q:"it=它"} ], {w:1});
  var items = yield collection.find().toArray();
  console.log("items=%j", items);
  var result = yield db.close();
});

執行結果

NQU-192-168-60-101:js csienqu$ node comongotest
items=[{"_id":"57201788d3c8212f034d9479","type":"word","q":"he=他"},{"_id":"57201788d3c8212f034d947a","type":"word","q":"she=她"},{"_id":"57201788d3c8212f034d947b","type":"word","q":"it=它"}]