美文网首页我爱编程
mongodb读书笔记

mongodb读书笔记

作者: 金小可 | 来源:发表于2017-08-14 12:42 被阅读21次

    一、NoSQL

    NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。

    NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

    CAP定理(CAP theorem)

    在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
    一致性(Consistency) (所有节点在同一时间具有相同的数据)
    可用性(Availability) (保证每个请求不管成功或者失败都有响应)
    分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

    NoSQL 数据库分类

    列存储、文档存储、key-value存储、图存储、对象存储、xml数据库。

    二、MongoDB

    2.1 简介

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,将数据存储为一个文档,数据结构由键值(key=>value)对组成,MongoDB 文档类似于 JSON 对象。

    集合就是 MongoDB 文档组,类似于RDBMS中的表格。
    

    2.2 常用命令

    进入mongo shell控制台,可以对数据库进行操作

    01. show dbs  ==>  显示所有数据的列表
    02. db  ==>  显示当前数据库对象或集合
    03. use *  ==>  创建或连接到一个指定的数据库
    04. db.dropDatabase()  ==>  删除当前数据库
    05. show tables  ==>  显示集合
    06. db.collection.drop()  ==>  删除集合
    07. db.collection.insert({})  ==>  向集合插入文档数据,insertOne,insertMany
    08. db.collection.update({}, {})  ==>  更新集合中文档数据
    09. db.collection.save({})  ==>  插入(指定_id时)或更新集合文档数据
    10. db.collection.remove({}, Boolean)  ==>  删除集合中文档数据
    11. db.collection.find(query, projection)  ==>  查询集合中文档数据,pretty()显示方式,{<key>:{$ne:<value>}}、{<key>:{$lt:<value>}}、{<key>:{$lte:<value>}}、{<key>:{$gt:<value>}}、{<key>:{$gte:<value>}}; $or: []; $type类型判断;
    12. db.collection.find({},{}).limit(x).skip(y)  ==>  限制和跳过
    13. db.collection.find().sort({})  ==> 排序,1为升序排列,而-1是用于降序排列
    14. db.collection.ensureIndex({}, {})  ==>  建立索引
    10. db.collection.aggregate([{$group***}])  ==>  聚合,$sum、$avg、$min、$max、$push、$addToSet 、$first、$last;$project、$match、$limit、$skip、$unwind、$group、$sort、$geoNear;
    10. db.collection.remove({}, Boolean)  ==>  删除集合中文档数据
    10. db.collection.remove({}, Boolean)  ==>  删除集合中文档数据
    10. db.collection.remove({}, Boolean)  ==>  删除集合中文档数据
    10. db.collection.remove({}, Boolean)  ==>  删除集合中文档数据
    db.collection.find(query, projection)
    

    2.3 MongoDB 数据类型

    String  字符串
    Integer 整型数值
    Boolean 布尔值
    Double  双精度浮点值
    Min/Max keys    将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比
    Arrays  用于将数组或列表或多个值存储为一个键
    Timestamp   时间戳
    Object  用于内嵌文档
    Null    用于创建空值
    Symbol  符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言
    Date    日期时间
    Object ID   对象 ID。用于创建文档的 ID
    Binary Data 二进制数据
    Code    代码类型
    Regular expression   正则表达式类型
    

    2.4 复制、分片、备份、恢复、监控

    1. MongoDB复制是将数据同步在多个服务器的过程。
    2. 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。
    3. 在Mongodb中我们使用mongodump命令来备份MongoDB数据。
            mongodump -h dbhost -d dbname -o dbdirectory
    4. mongodb使用 mongorestore 命令来恢复备份的数据。
            mongorestore -h <hostname><:port> -d dbname <path>
    5. MongoDB中提供了mongostat 和 mongotop 两个命令来监控MongoDB的运行情况。
    

    三、Nodejs MongoDB

    1、安装
        $ npm install mongodb
    2、创建
        MongoDB 会自动创建数据库和集合,所以使用前我们不需要手动去创建。
    3、链接
        MongoClient.connect(DB_CONN_STR, function(err, db) {
            console.log("连接成功!");
        });
    4、插入
        db.collection('site').insert([], function(err, result) {});
    5、查询
        db.collection('site').find({}). toArray(function(err, result) {});
    6、更新
        db.collection('site')..update({},{}, function(err, result) {});
    7、插入
        db.collection('site').remove([], function(err, result) {});
    

    三、Nodejs MongoDB Mongoose

    mongoose构建在mongodb(MongoDB数据库驱动)之上,提供了Schema、Model和Document对象,用起来更为方便。

    3.1 connect

    连接数据库

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/accounts');
    var db = mongoose.connection;
    db.on('error', function() {});
    db.on('open', function() {});
    db.on('close', function() {});
    

    3.2 Schema

    定义数据库数据结构

    var userSchema = new mongoose.Schema({
          name:{type: String, unique: true}, 
          password:String
        }, {collection: "accounts"}  // optional
        );
      //String、Number、Boolean | Bool、Array、Buffer、Date、ObjectId、Mixed
    

    3.3 Model

    创建插入数据

    new User({name:"**", password:"**"}).save(function(err, doc){});  
    
    User.create({name:"**", password:"**"}, function(err, doc){});  
    

    3.4 Model API

    create()、find()、findOne()、update()、remove()
    

    相关文章

      网友评论

        本文标题:mongodb读书笔记

        本文链接:https://www.haomeiwen.com/subject/jdjlrxtx.html