node操作mongodb資料庫
阿新 • • 發佈:2018-12-23
安裝
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();
});