mongodb 安裝
brew install mongo
創(chuàng)建shell命令
user目錄新建db.sh
#! /bin/sh
mongod --dbpath ~/data/db
GUI客戶端robomongo
mongo / mongod / mongos
mongo 是mongoDB體系中交互式的JS shell,用來操縱數(shù)據(jù)庫
mongod 起項(xiàng)目-mongod系統(tǒng)的駐臺程序
mongod = mongo + daemon
1處理數(shù)據(jù)請求
2管理數(shù)據(jù)
3管理后臺任務(wù)
- mongos "MongoDB Shard"切片服務(wù), 處理回調(diào)
mongo基本層級劃分
|- db
|- |- collections
|- |- |- documents
|- |- |- |- Field
對比mysql關(guān)系型數(shù)據(jù)庫
MySQL | MongoDB |
---|---|
Table | Collection |
Row | Document |
Column | Field |
Joins | Embedded documents, linking |
關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫
- 關(guān)系型數(shù)據(jù)庫(schema) 無法獨(dú)立
-- name age sex
-- tom 12 man - 非關(guān)系型數(shù)據(jù)庫(鍵值對)
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 表達(dá)式
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 基礎(chǔ)操作
MongoDB Port 提供服務(wù)
27017
: mongod and mongos 默認(rèn)端口
getting start
http://mongodb.github.io/node-mongodb-native/2.2/quick-start/quick-start/
查數(shù)據(jù)
$ mongo
> db
> use myproject
> db.getCollection('documents').find({})
Mongose Lib Getting Start
mongoosejs.com/docs/index.html
step-1 定義Schema
定義數(shù)據(jù)模型 shape
const mongoose = require('mongoose')
const $_blogSchema = mongoose.Schema({
title.: String,
content: String,
category: String
}) // 定義數(shù)據(jù)模型
/*
* mongoose.model 參數(shù)
* @param collection name
* @param schema
*/
exports.BlogModel = mongoose.model('Blog', $_blogSchema)
// 用model把Schema模型和'Blog'這個collections進(jìn)行聯(lián)系
step-2 實(shí)現(xiàn)保存
/*
* 保存
* 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 看數(shù)據(jù)庫
>show dbs
>db.createCollection('blog', {}) 創(chuàng)建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}) // 更新,第一個為條件,第二個為內(nèi)容
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("5904732aa67c963a82dcc463"), "a" : 1 }
{ "_id" : "yangran", "b" : 3 }