1. 程式人生 > >node操作mongodb資料庫

node操作mongodb資料庫

安裝

cnpm install mongodb

建立資料庫

//建立物件
var MongoClient = require('mongodb').MongoClient;

//配置url和埠
var url = "mongodb://localhost:27017/runoob";

//連結 
MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  console.log("資料庫已建立!");
  db.close();
});
建立集合
var MongoClient = require
('mongodb').MongoClient; var url = 'mongodb://localhost:27017/runoob'; MongoClient.connect(url, function (err, db) { if (err) throw err; console.log('資料庫已建立'); //建立集合 var dbase = db.db("runoob"); dbase.createCollection('site', function (err, res) { if (err) throw err; console.log("建立集合!"
); db.close(); }); });
插入資料
  • 插入一條: insertOne()
  • 插入多條: insertMany()
插入多條

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var myobj =  [
        { name: '菜鳥工具'
, url: 'https://c.runoob.com', type: 'cn'}, { name: 'Google', url: 'https://www.google.com', type: 'en'}, { name: 'Facebook', url: 'https://www.google.com', type: 'en'} ]; dbo.collection("site").insertMany(myobj, function(err, res) { if (err) throw err; console.log("插入的文件數量為: " + res.insertedCount); db.close(); }); });
查詢資料
  • 無條件 : find({})
  • 有條件 : find(filter),filter為要查詢物件
查詢多條

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
     var whereStr = {"name":'菜鳥教程'};  // 查詢條件
    dbo.collection("site").find(whereStr).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});
更新資料
  • 更新一條 : updateOne()
  • 更新多條 : updateMany()
更新多條

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = {"type":'en'};  // 查詢條件
    var updateStr = {$set: { "url" : "https://www.runoob.com" }};
    dbo.collection("site").updateMany(whereStr, updateStr, function(err, res) {
        if (err) throw err;
         console.log(res.result.nModified + " 條文件被更新");
        db.close();
    });
});
刪除資料
  • 刪除一條 : deleteOne()
  • 刪除多條 : deleteMany()
刪除多條

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = { type: "en" };  // 查詢條件
    dbo.collection("site").deleteMany(whereStr, function(err, obj) {
        if (err) throw err;
        console.log(obj.result.n + " 條文件被刪除");
        db.close();
    });
});
排序
  • sort(),該方法接受一個引數,規定是升序(1)還是降序(-1)
    • { type: 1 } // 按 type 欄位升序
    • { type: -1 } // 按 type 欄位降序
升序

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var mysort = { type: 1 };
    dbo.collection("site").find().sort(mysort).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});
分頁
  • limit(2) 限制兩條
讀取兩條

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    dbo.collection("site").find().limit(2).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
  });
});
$lookup關聯左集合
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    dbo.collection('orders').aggregate([
        { $lookup:
            {
                from: 'products',           # 右集合
                localField: 'product_id',   # 左集合 join欄位
                foreignField: '_id',        # 右集合 join欄位
                as: 'orderdetails'          # 新生成欄位(型別array)
            }
        }
    ], function(err, res) {
    if (err) throw err;
    console.log(JSON.stringify(res));
    db.close();
    });
刪除集合