学习mongodb

参考教程https://github.com/slashhuang/mongo-panda

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关系型数据库

MySQLMongoDB
TableCollection
RowDocument
ColumnField
JoinsEmbedded 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 }
    原文作者:coolheadedY
    原文地址: https://www.jianshu.com/p/c49ca90e3c13
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞