最近更新时间:2017年12月09日11:38:46
选择了从事技术岗位,就需要不断学习和探索自己未知的知识领域,因为有一天我们掌握的现有技术一定会被颠覆,社会一直在进步,科技引领时代发展,保持学习是掌握自己命运的法宝。
1、概要
传统的MySQL、Oracle等关系型数据库,在存储数据之前需要为数据定义数据表,并且为该数据表定义一些字段,从而使数据模型得到实现。在关系型数据库中,一个数据表就是一个数据架构。它预先定义了开发者可以使用的数据模型。
MongoDB是面向文档的数据库,不是关系型数据库。被认为是无数据架构的。然而数据架构仍然是有用的,可以使人以易读的方式来描述数据库中的数据内容,并为这些数据定义一些规则。
mongod 是用来连接到mongodb数据库服务器的,即服务器端。
mongo 是用来启动MongoDB shell的,是mongodb的命令行客户端。
安装
Mac默认安装路径/usr/local/var/mongodb,环境变量路径,数据库程序/usr/local/bin/mongo,数据库服务器/usr/local/bin/mongod
配置
查看配置文件,/usr/local/etc/mongod.conf,修改默认数据库路径为/Users/wanshaobo/document/mongo/db,修改数据库日志文件为/Users/wanshaobo/document/mongo/log/mongo.log
启动
启动默认数据库服务器,sudo mongod
启动指定数据库服务器,mongod --dbpath /Users/wanshaobo/document/mongo/db --logpath /Users/wanshaobo/document/mongo/db/MongoDB.log
启动数据库程序,$ mongo,常用命令如下:
$ db 查看当前所连接的数据库
$ use dbname 创建/切换数据库
$ show dbs 查看存在的数据库
$ exit 退出程序
$ db.abc.find().pretty()
$ db.abc.insert();
$ db.abc.update()
可视化工具
robomongo
数据库文件迁移
2、Mongoose-连接express框架和MongoDB数据库的纽带
导入mongoose库
var mongoose = require('mongoose');
获取db对象
var db = mongoose.connection;
db对象事件
db.on(name,callback);//name:error,open,connection,connected,disconnecting,disconnected
启动
mongoose.connect(''mongodb://localhost:27017/abc'')
关闭
mongoose.connection.close(); 等同于 db.close();
mongoose.disconnect();
Schema-数据模型(数据集),用来定义数据结构和类型,创建数据模型:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
username: {
type: String,
unique: true
},
password: {
type: String
},
age: Number,
address: String,
createAt: {
type: Date,
default : Date.now()
}
});
动态扩展数据模型:
userSchema.add({sex:String});
数据模型支持的数据类型:String,Number,Date,Buffer,Boolean,Mixed,Objectid,Array
Model-数据模型的构造函数,对数据进行增删改查操作,创建数据模型(数据对象)构造函数:
var User = mongoose.model('users', userSchema);
数据模型(数据对象)实例化:
var wanshaobo = new User({
username: 'wanshaobo' ,password: '*******' ,
age: 28,
address: 'beijing',
createAt: 2017-12-09
})
实例方法
wanshaobo.methods.sayName = function(){}
静态方法
userSchema.statics.printName = function(){}