今天我們要來介紹MongoDB,一個NOSQL資料庫
有關NOSQL的好處我們引用一篇文章:
CouchDB、MongoDB、Cassandra 和 HBase 等 NoSQL 資料庫旨在處理真正的巨量資料。實際上,你可以以幾乎沒有結構的資料庫儲存大量資料。此外,NoSQL 資料庫允許資料混合,以及允許不同類型的資料一起儲存。
只需要少許的努力,NoSQL 資料庫就能立即擴展多個資料中心。
今天我們選擇MONGODB的原因呢除了容易擴展之外,還有mongodb本身就用JSON格式儲存
官方載點:(https://docs.mongodb.com/manual/installation/)
我們就先來介紹基本的CRUD(Create,read,update,delete)
先下載mongodb的node套件
npm install mongodb
然後我們先來測試mongodb是否可以連接
var MongoClient = require('mongodb').MongoClient;
// Connect to the db
MongoClient.connect("mongodb://localhost:27017/你mondodb的資料庫位址", function (err, client) {
if(err) throw err;
//Write databse Insert/Update/Query code here..
console.log('mongodb is running!');
client.close(); //關閉連線
});
如果資料庫位子有填對 會看到終端機上印出了mongodb is running!的訊息
接下來來看insert
var MongoClient=require('mongodb').MongoClient;
MongoClient.connect("mongodb://127.0.0.1:27017/test",function(err,client){
if(err){
console.log(err);
console.log('connecting fail');
return;
}
console.log('connecting');
var db_client = client.db('test')
var db_table = db_client.collection('test')
console.log('connection success')
db_client.collection('test',function(err,collection){
collection.insertOne({ id:1, name:'test', data:123 });
collection.countDocuments(function(err,count){
if(err) throw err;
console.log('Total Rows:'+count);
});
});
db_table.find({}).toArray(function(err, result){
if (err) throw err;
console.log (result)
client.close;
});
})
成功後會看到插入了一個資料 然後會把插入的資料印出來
再來來看如何找尋剛剛插入的資料
var MongoClient=require('mongodb').MongoClient;
MongoClient.connect("mongodb://127.0.0.1:27017/test",function(err,client){
var db_client = client.db('test')
var db_table = db_client.collection('test')
db_client.collection("test",function(err,collection){
collection.find({name:"test"}).toArray(function(err,items){
if(err) throw err;
console.log(items);
console.log("We found "+items.length+" results!");
});
db_table.find({}).toArray(function(err, result){
if (err) throw err;
console.log (result)
client.close;
});
});
client.close(); //關閉連線
})
從上面的程式可以看出,我們使用了兩種找法 一種是直接搜尋整個資料表 一種是直接用欄位搜尋
執行結果會像這樣
因為資料表只有一筆資料所以兩種都只會印出一筆
到現在講了插入資料和尋找資料 再來講更新資料的部份
var MongoClient=require('mongodb').MongoClient;
MongoClient.connect("mongodb://127.0.0.1:27017/test",function(err,client){
if(err){
console.log(err);
console.log('connecting fail');
return;
}
var db_client = client.db('test')
var db_table = db_client.collection('test')
db_client.collection('test', function(err,collection){
collection.updateOne({id:1},{ $set: { name:'test', data:789}
},
{w:1}, function(err, result){
if(err) throw err;
console.log('update successful');
});
});
client.close();
})
更新完之後會在看到update successful 然後在用find去找一次 就看到資料被更新了
最後要講刪除資料 如果資料不需要或是有其他情況需要刪除就會需要用到delete
一樣先看程式碼
var db_client = client.db('test')
var db_table = db_client.collection('person')
db_client.collection('test',function(err,collection){
collection.deleteOne({id:2},{w:1},function(err,result){
if(err) throw err;
console.log('collection remove');
});
});
client.close(); //關閉連線
如果成功就會看到collection remove的訊息 並且再去查看資料庫的時候
就看到資料表裡的資料已經被移除了
今天我們講了mongodb基本的插入,尋找,更新跟刪除
明天我們就可以來試試把感測器的資料放進資料庫裡面
我們明天見摟