數據庫操做( CURD )html
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; # 數據庫爲 runoob var insertData = function(db, callback) { //鏈接到表 site var collection = db.collection('site'); //插入數據 var data = [{"name":"菜鳥教程","url":"www.runoob.com"},{"name":"菜鳥工具","url":"c.runoob.com"}]; collection.insert(data, function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("鏈接成功!"); insertData(db, function(result) { console.log(result); db.close(); }); });
> show dbs admin 0.000GB local 0.000GB runoob 0.000GB # 自動建立了 runoob 數據庫 > show tables site # 自動建立了 site 集合(數據表) > db.site.find() # 查看集合中的數據 { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "www.runoob.com" } { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鳥工具", "url" : "c.runoob.com" } >
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var selectData = function(db, callback) { //鏈接到表 var collection = db.collection('site'); //查詢數據 var whereStr = {"name":'菜鳥教程'}; collection.find(whereStr).toArray(function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("鏈接成功!"); selectData(db, function(result) { console.log(result); db.close(); }); });
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var updateData = function(db, callback) { //鏈接到表 var collection = db.collection('site'); //更新數據 var whereStr = {"name":'菜鳥教程'}; var updateStr = {$set: { "url" : "https://www.runoob.com" }}; collection.update(whereStr,updateStr, function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("鏈接成功!"); updateData(db, function(result) { console.log(result); db.close(); }); });
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var delData = function(db, callback) { //鏈接到表 var collection = db.collection('site'); //刪除數據 var whereStr = {"name":'菜鳥工具'}; collection.remove(whereStr, function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("鏈接成功!"); delData(db, function(result) { console.log(result); db.close(); }); });
http://wiki.jikexueyuan.com/project/node-lessons/mongodb-mongoose.html
Mongoose是MongoDB的一個對象模型工具,是基於node-mongodb-native開發的MongoDB nodejs驅動,能夠在異步的環境下執行。
同時它也是針對MongoDB操做的一個對象模型庫,封裝了MongoDB對文檔的的一些增刪改查等經常使用方法,讓NodeJS操做Mongodb數據庫變得更加靈活簡單。
咱們經過Mongoose去建立一個「集合」並對其進行增刪改查,就要用到它的三個屬性:Schema(數據屬性模型)、Model、Entitynode
// 首先引入 mongoose 這個模塊 var mongoose = require('mongoose'); // 而後鏈接對應的數據庫:mongodb://localhost/test // 其中,前面那個 mongodb 是 protocol scheme 的名稱;localhost 是 mongod 所在的地址; // 端口號省略則默認鏈接 27017;test 是數據庫的名稱 // mongodb 中不須要創建數據庫,當你須要鏈接的數據庫不存在時,會自動建立一個出來。 // 關於 mongodb 的安全性,mongodb 我印象中安全機制很殘廢,用戶名密碼那套都作得很差,更 // 別提細緻的用戶權限控制了。不過不用擔憂,mongodb 的默認配置只接受來自本機的請求,內網都連不上。 // 當須要在內網中爲其餘機器提供 mongodb 服務時,或許能夠去看看 iptables 相關的東西。 mongoose.connect('mongodb://localhost/test'); // 上面說了,我推薦在同一個 collection 中使用固定的數據形式。 // 在這裏,咱們建立了一個名爲 Cat 的 model,它在數據庫中的名字根據傳給 mongoose.model 的第一個參數決定,mongoose 會將名詞變爲複數,在這裏,collection 的名字會是 `cats`。 // 這個 model 的定義是,有一個 String 類型的 name,String 數組類型的 friends,Number 類型的 age。 // mongodb 中大多數的數據類型均可以用 js 的原生類型來表示。至於說 String 的長度是多少,Number 的精度是多少。String 的最大限度是 16MB,Number 的整型是 64-bit,浮點數的話,js 中 `0.1 + 0.2` 的結果都是亂來的。。就不期望什麼了。。 // 這裏能夠看到各類示例:http://mongoosejs.com/docs/schematypes.html var Cat = mongoose.model('Cat', { name: String, friends: [String], age: Number, }); // new 一個新對象,名叫 kitty // 接着爲 kitty 的屬性們賦值 var kitty = new Cat({ name: 'Zildjian', friends: ['tom', 'jerry']}); kitty.age = 3; // 調用 .save 方法後,mongoose 會去你的 mongodb 中的 test 數據庫裏,存入一條記錄。 kitty.save(function (err) { if (err) // ... console.log('meow'); });
mongoose增刪改查mongodb
//查 app.get('/api/blogs', function(req, res) { Blog.find(function(err, todos, txt) { if (err) res.send(err); res.json(todos); }); }); //增 app.post('/api/blogs/:lis', function(req, res) { Blog.create({ title :req.body.title }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err); res.json(todos); }); }); }); //刪 app.delete('/api/blogs/:blog_id', function(req, res) { Blog.remove({ _id : req.params.blog_id //獲取參數 }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); }); //改 app.post('/api/editblogs/:blog_id', function(req, res) { var id = req.params.blog_id;//獲取參數 var updatestr = { 'title': req.body.title }; //mongoose更新 Blog.findByIdAndUpdate(id, updatestr, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); });
//查 app.get('/api/blogs', function(req, res) { Blog.find(function(err, todos, txt) { if (err) res.send(err); res.json(todos); }); }); //增 app.post('/api/blogs/:lis', function(req, res) { //解析爲html var mktext = markdown.toHTML(req.body.text); var myDate = new Date(); var addDate = myDate.toLocaleDateString(); var time = addDate; var index=req.params.lis; Blog.create({ index :index,//索引 title :req.body.title, //標題 text : mktext,//html格式文本 intro :req.body.intro, //摘要 mktext:req.body.text,//md格式文本 author:req.body.author,//做者 tag:req.body.tag,// date : time }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err); res.json(todos); }); }); }); //刪 app.delete('/api/blogs/:blog_id', function(req, res) { Blog.remove({ _id : req.params.blog_id //獲取參數 }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); }); //改 app.post('/api/editblogs/:blog_id', function(req, res) { var id = req.params.blog_id;//獲取參數 var editmktext = markdown.toHTML(req.body.mktext);//解析文本 var updatestr = { 'title': req.body.title , 'text': editmktext , 'mktext': req.body.mktext , 'intro': req.body.intro, 'author' : req.body.author, 'tag' : req.body.tag }; //mongoose更新 Blog.findByIdAndUpdate(id, updatestr, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); });
http://www.nodeclass.com/api/mongoose.html數據庫