这个主要是自己学习mongoDB的一些小的笔记
##mongoDB简介
MongoDB是一个面向文档的数据库,而不是关系型数据库(Mysql)与关系型数据库相比,文档型数据块不再有“行”(row)的概念,取而代之的是“文档”(Document)模型,主要是运用一条记录来表现复杂的层次关系
没有固定的类型和大小,可以存储任意的数据类型和大小,包括很大的数据内容
MongoDB可以很方便的进行分片,可以采取分布式的部署方式
索引:MongoDB支持通用二级索引,允许多种快速索引
##MongoDB shell简单命令
数据库的查看
show dbs
使用数据库
use lab
显示集合
show collections
显示文档,db.sessions.find()
创建文档
post = {“title” : “My Blog Post”,”content” : “Here’s my blog post”,”date” : new Date()}
{"title" : "My Blog Post", "content" : "Here's my blog post" "date" : ISODate("2015-01-29T21:00:00.982Z")
}
//创建
db.blog.insert(post)
//查看
db.blog.find()
//查看其中一个
db.blog.findOne()更新文档
修改post变量,增加键”comments”post.comments = []
执行update操作,替换标题为”My Blog Post”的文章
db.blog.update({titile : “My Blog Post”}, post)
db.blog.find()
{"_id": "titile" "content" "date" "comments" : [ ]
}
删除文档
db.blog.remove({title : “My Blog Post”})
删除数据库
drop blog
##nodejs中使用MongoDB
var mongodb = require('./db');
function Report(name, grade, time, Report) {
this.name = name;
this.grade = grade;
this.time = time;
this.report = Report;
};
module.exports = Report;
Report.prototype.save = function save(callback) {
// 存入 Mongodb 的report
var report = this.report;
var name =this.name;
var grade=this.grade;
var time= this.time;
mongodb.open(function(err, db) {
if (err) {
return callback(err);
}
// 读取report
db.collection('report', function(err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
// 若存在则更新,若不存在则增加
collection.update({"name": name, "grade":grade, "time": time}, {$set: {"report" : report}}, {upsert:true}, function(err, report) {
mongodb.close();
callback(err, report);
});
});
});
};
Report.get = function get(name, callback) {
mongodb.open(function(err, db) {
if (err) {
return callback(err);
}
// 讀取 posts 集合
db.collection('report', function(err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
// 查找 user 屬性爲 username 的文檔,如果 username 是 null 則匹配全部
var query = {};
if (name) {
query.name = name;
}
collection.find(query).sort({time: -1}).toArray(function(err, docs) {
mongodb.close();
if (err) {
callback(err, null);
}
// 封裝 posts 爲 Post 對象
var reports = [];
docs.forEach(function(doc, index) {
var report = new Report(doc.name, doc.grade, doc.time, doc.report);
reports.push(report);
});
//console.log(reports);
callback(null, reports);
});
});
});
};