曹阳的博客 仅用于学习和分享

MongoDB的学习

2019-10-14

MongoDB的学习

MongoDB简介

什么是MongoDB

非关系型,分布式文档数据库
特定:扩展灵活,结构灵活,使用方便,支持查询、索引
缺点:缺乏事务控制,无法保障数据完整性

  1. MongoDB是一个基于分布式文件存储的数据库(一个机器装了MongoDB不够用了还可以用另一个机器装)

  2. 由C++语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案

  3. MongoDB是以文件的形式来存储的,数据不会丢失

  4. MongoDB是一个介于关系型和非关系型数据库之间的产品,是非关系型数据库中最丰富的也最像关系数据库的

  5. 它支持的数据结构是类似json的bson格式

  6. 引擎是js引擎(JavaScript代码可以直接写)

  7. 支持索引,查询

  8. 也是key-value结构,只不过key不用我们指定,自动生成

  9. 使用场景

速度:Redis>MongoDB>Oracle/MySQL
完整性:Oracle/MySQL>Redis>MongoDB
单表操作的,不要求完整性的,结构变化多的,量大的冗余性数据多的,价值不是太高的用mongodb

启动服务

安装后启动服务

E:
cd mongodb\bin
mongod --dbpath E:\mongodb\data

新建个窗口
E:
cd mongodb\bin
mongo

做成Windows服务

E:
cd mongodb\bin
mongod --dbpath E:\mongodb\data --logpath E:\mongodb\logs\m.log --serviceName MongoDB --install

启动服务:
net start MongoDB

E:
cd mongodb\bin
mongo

在任意目录下启动

把E:\mongodb\bin添加到环境变量
mongo

命令

库命令

  1. 查看show dbs

  2. 使用use 库名

  3. 创建use 库名
    库存在就是使用,不存在就是创建

  4. 删除db.dropDatabase()
    删除当前use的库

集合

  1. 查看show collections

  2. 创建
    当使用db.insert插入数据时,集合不存在时会自动创建

  3. 删除db.集合名.drop()

数据操作

  • 插入
  1. 插入单条数据
    db.dept.insert({"no":1,"dname":"beijing"})

  2. 插入多条数据
    var objs=[{"no":3,"dname":"chengdu"},{"no":4,"dname":"shenyang"}];
    db.dept.insert(objs)

    for(var i=1;i<10;i++){db.dept.insert({"no":10+i,"dname":"bj"+i});}

  • 删除
  1. 删除单条数据db.dept.remove({"no":1})

  2. 删除多条数据db.dept.remove({})

  • 修改
  1. 全部更新db.dept.update({"no":1},{"dname":"shanghai"})

  2. 部分更新
    db.dept.update({条件json对象},{$set:要更新的json对象})
    db.dept.update({"no":1},{$set:{"dname":"chengdu"} })

  • 查询
  1. 查询所有记录db.dept.find()

  2. 查询某条记录:no=1的记录db.dept.find({"no":1,"dname":"beijing"})

  3. 查询条件记录
    no>1的记录db.dept.find({"no":{$gt:1} })
    no>=1的记录db.dept.find({"no":{$gte:1} })
    $gt大于,$lt小于,$gte大于等于,$lte小于等于,$ne不等于

  4. 统计
    统计所有记录数量db.dept.count()
    统计满足条件记录数db.dept.count({"no":{$gte:11} })


上一篇 Oracle的学习1

下一篇 Oracle的学习2

Content