mongodb 安装
brew install mongo
创建shell命令
user目录新建db.sh
#! /bin/sh
mongod --dbpath ~/data/db
GUI客户端robomongo
mongo / mongod / mongos
mongo 是mongoDB体系中交互式的JS shell,用来操纵数据库
mongod 起项目-mongod系统的驻台程序
mongod = mongo + daemon
1处理数据请求
2管理数据
3管理后台任务
- mongos “MongoDB Shard”切片服务, 处理回调
mongo基本层级划分
|- db
|- |- collections
|- |- |- documents
|- |- |- |- Field
对比mysql关系型数据库
MySQL | MongoDB |
---|---|
Table | Collection |
Row | Document |
Column | Field |
Joins | Embedded documents, linking |
关系型数据库、非关系型数据库
- 关系型数据库(schema) 无法独立
— name age sex
— tom 12 man - 非关系型数据库(键值对)
key: value
mongodb和mysql对比
查询语句
# MySQL
INSERT INTO users (user_id, age, status)
VALUES ('bcd001', 45, 'A')
# MongoDB
db.users.insert({
user_id: 'bcd001',
age: 45,
status: 'A'
})
取表
# MySQL 语句
SELECT * FROM users where user_id='bcd001'
# MongoDB 表达式
db.users.find({ userid: 'bcd001' })
更新
# MySQL
UPDATE users SET status = 'C'
WHERE age > 25
# MongoDB
db.users.update(
{ age: { $gt: 25 } }, // 大于25
{ $set: { status: 'C' } }, // 更新为C
{ multi: true } // 全部更新
)
MongoDB Getting Start 基础操作
MongoDB Port 提供服务
27017
: mongod and mongos 默认端口
getting start
http://mongodb.github.io/node-mongodb-native/2.2/quick-start/quick-start/
查数据
$ mongo
> db
> use myproject
> db.getCollection('documents').find({})
Mongose Lib Getting Start
mongoosejs.com/docs/index.html
step-1 定义Schema
定义数据模型 shape
const mongoose = require('mongoose')
const $_blogSchema = mongoose.Schema({
title.: String,
content: String,
category: String
}) // 定义数据模型
/*
* mongoose.model 参数
* @param collection name
* @param schema
*/
exports.BlogModel = mongoose.model('Blog', $_blogSchema)
// 用model把Schema模型和'Blog'这个collections进行联系
step-2 实现保存
/*
* 保存
* http://mongoosejs.com/docs/api.html#model_Model-save
*/
const mongoose = require('mongoose');
const _ = require('lodash');
const BlogModel = require('./model')['BlogModel'];
const db_saveBlog = (blogData)=>{
let blog = _.pick(blogData,['title','content','category'])
let $blog = new BlogModel(blog);
return $blog.save().then(blog=> {
console.log(blog);
console.log('save successfully')
});
};
module.exports = db_saveBlog;
step-3 更新
/*
* 更新文档http://mongoosejs.com/docs/api.html#model_Model.update
*/
const _ = require('lodash');
const BlogModel = require('./model')['BlogModel'];
const db_updateBlog = updateObj=>{
let { condition,updater} = updateObj
return BlogModel.update(condition, { $set: updater}, {multi: true}).exec();
}; // multi: true为更新全部
module.exports = db_updateBlog;
mongo 命令基本操作
>db 看数据库
>show dbs
>db.createCollection('blog', {}) 创建blog
>use blog 选择blog
>db // blog
>cls 清空
>show collections
>db.users.insert({name: 'yangran'}) 添加
>db.users.find() 查询
>db.users.insert([{a:"1"},{b:"2"}]) 添加多个
>db.users.drop() 删除全部
> db.users.find() // 自动添加了_id 24位算法
{ "_id" : ObjectId("5904732aa67c963a82dcc463"), "a" : 1 }
> db.users.insert({_id: 'yangran', b:2}) // 自己添加_id
> db.users.find()
{ "_id" : ObjectId("5904732aa67c963a82dcc463"), "a" : 1 }
{ "_id" : "yangran", "b" : 2 }
> db.users.update({_id: 'yangran'}, {b:3}) // 更新,第一个为条件,第二个为内容
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("5904732aa67c963a82dcc463"), "a" : 1 }
{ "_id" : "yangran", "b" : 3 }