Mongodb

一、简介

关系型数据库:e-r图,实体和实体之间存在1:1或者1:n或者n:m的关系

  mysql    orcale    sqlserver    access...

  缺点:1)存储在硬盘上  读写慢    2)保持ACID  难扩展

非关系型数据库:NoSql(not only sql)

  key:value

  cap原则 -> BASE     分布式   

  cap原则只能两者取其二

    1)一致性  : 所有的节点在同一时间有相同的数据

    2)可用性 : 请求不论失败还是成功都有响应

    3)分隔容忍 : 信息的丢失或失败不影响系统的继续运作

  缺点:

    1)没有标准化

    2)有限的查询功能

二、mongoDB

1.1 概述

  1)非关系型数据库

  2)文档存储:类json格式

  3)有机会对字段建立索引,实现关系数据库

1.2 使用

  1)运行mongo服务器

    mongod -dbpath xxx

  2) 连接MongoDB

    mongo

  3) 查看当前数据库

    show dbs

  4) 切换数据库

    use demo2

  5) 在数据库中插入一条数据

    db.demo2.insert({"name":"lisa"})

  6)删除数据库

    use demo2

    db.dropDatabase()

    show dbs

1.2 集合

  1)创建集合

    db.createCollection('collection1')

  2) 查看已经创建的集合

    show collections

  3) 删除集合

    db.collection1.drop()

  4) 插入和查看

    插入文档时,mongodb自动创建集合

    db.collectionDemo.insert({"name":"hello"})

    查看插入的内容

    db.collectionDemo.find().pretty()

  5) 插入复杂文档

    document = ({

    title:'MongoDB',

    by:'RuotongYu',

    tags:['mongodb','database','NoSQL'],

    });

    db.collectionDemo.insert(document)

    db.collectionDemo.find().pretty()

  6) 修改文档 

    db.collection.update(        # 替换的是整条数据

    <query>,

    <update>,                   

    {

    upsert:<boolean>,         # 如果不存在update记录,是否插入,默认否

    multi:<boolean>,           # 把按条件查出来多条记录全部更新,默认否

    writeConcern:<document>     # 抛出异常的级别

    }

    )

    例子:

    db.col.update({'title':'MongoDB'},

    {'title':'MongoDB123'})

    修改多个文档

    db.col.update({'name':'MongoDB'},

    {$set{'title':'MongoDB123'}},

    {multi:true})

   7) 删除文档 

    删除多个

    db.col.remove({'name':'hello123'})

    删除一个文档

    db.col.remove({'name':'hello'},1)

   8) 修改操作符

    用法:{$inc:{field:value}}

    作用:对一个数字字段的某个field增加value

    示例:将name为xiaohong的学生的age增加5

    db.students.update({name:"xiaohong"},{$inc{age:5}})

    追加:{$push:{field,value}}

    作用:把value追加到field中

    示例:给chenzhou添加别名michael

    db.students.update({name:"chenzhou"},{$push:{"ailas":"Michael"}})   

    重命名:{$rename:{old_field_name:new_field_name}}

    作用:对字段进行重命名

    示例:把xiaohong记录的name字段重命名为hello

    db.student.update({name:"xiaohong"},{$rename:{"name":"name2"}})

原文地址:https://www.cnblogs.com/hd-test/p/11307938.html