继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Mongo学习笔记!!!!

没事放放牛
关注TA
已关注
手记 5
粉丝 19
获赞 201
简介

原文地址:http://www.dpfblog.com/2017/09/10/MongoDB/

什么是NoSQL?

NoSQL,指的是非关系型的数据库。

没有行、列的概念。用 JSON 来存储数据。集合就相当于 SQL 数据库中的“表”,文档就相当于“行”。

适用于:

  1. 数据模型比较简单;

  2. 需要灵活性更强的IT系统;

  3. 对数据库性能要求较高;

  4. 不需要高度的数据一致性;

  5. 对于给定key,比较容易映射复杂值的环境。

什么是MongoDB?

官网:https://www.mongodb.com

手册:https://docs.mongodb.org/manual

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB安装及运行

下载最新的stable版:https://www.mongodb.com/download-center#community

安装好之后,我们看一下安装的文件夹,例如:
C:\Program Files\MongoDB\Server\3.0\bin,将其加入到系统的path环境变量中,那么我们就能在系统的任何盘符,使用mongo命令了。

mongo   使用数据库
mongod  开机
mongoimport  导入数据
  1. 启动mongod服务

alt

--dbpath就是选择数据库文档所在的文件夹。

  1. 管理数据库(新开一个cmd)

alt

那么,运行环境就是mongo语法了。

MongoDB常用操作

查看所有数据库

show dbs

使用数据库、创建数据库

use test

use一个不存在的,就是新建。

查看当前所在数据库

db

插入数据

数据库中不能直接插入数据,只能往集合(collections)中插入数据。不需要创建集合,只需要写点语法:

db.student.insert({"name":"Davis","age":"22","sex":"男"})

db.student 系统发现student是一个陌生的集合名字,所以就自动创建了集合。

删除数据库

删除当前数据库

db.dropDatabase();
数据库使用

插入数据

插入数据,随着数据的插入,数据库创建成功了,集合也创建成功了。

db.student.insert({"name":"Davis","age":"22","sex":"男"})

我们不可能一条一条的insert。所以,我们希望用sublime在外部写好数据库的形式,然后导入数据库:

导入json

mongoimport --db test --collection student --drop --file data.json

导入json数组

mongoimport --db test --collection student --drop --file data.json --jsonArray

-db test 想往哪个数据库里面导入
--collection student 想往哪个集合中导入
--drop 把已存在数据清空
--file data.json 哪个文件

这样,我们就能用sublime创建一个json文件,然后用mongoimport命令导入。

查找数据

  1. 查找数据,用find。find中没有参数,那么将列出这个集合的所有文档:

    db.student.find()
  2. 精确匹配

    db.student.find({"age":22})
  3. 多个条件

    db.student.find({"age":12, "sex":"男"})
  4. 大于条件

    db.student.find({"age":{$gt:20}})
  5. 或者(寻找所有年龄是20岁,或者22岁的学生)

    db.student.find({$or:[{"age":20},{"age":22}]});
  6. 查找完毕之后,打点调用sort,表示升(1)降(-1)排序

    db.student.find().sort({"age":1, "score.English":1})
  7. 查看当前Mongodb运行状态
    db.student.stats();

分页查询

通过 sike()limit() 方法

假如,第一页是page=0。每页10条,所以当前页的查询语句

db.student.find({}).limit(10).skip(page*10)

limit()表示读取的条数,sike()表示略过的条数。

修改数据

  1. 修改里面还有查询条件

查找名字叫做Davis的,把年龄更改为20岁:

db.student.update({"name":"Davis"},{$set:{"age":20}})
  1. 更改所有匹配项目

    db.student.update({"sex":"男"},{$set:{"age":20}},{multi: true});
  2. 完整替换,不出现$set关键字了
    db.student.update({"name":"Davis"},{"name":"dpf","age":20});

删除数据

  1. 删除集合中高数成绩为 60 的学生

    db.student.remove({'score.English':60});
  2. 删除第一条找到的记录可以设置 justOne 为 1
    db.student.remove({'score.English':60},1);

MongoVE连接MongoDB

不显示数据问题

mongoDB3.2版本之后默认开启的存储引擎是 wiredTiger,使用这种存储引擎存储的数据只能在命令行中看到,在 mongoVUE 中看不到。

所以,需要换成 mmapv1 操作引擎,此时就可以在 mongoVUE 中看到 Collections 下的内容

mongod --storageEngine mmapv1 --dbpath D:\mongo(路径)

选择 mmapv1存储引擎后,ns 后缀文件就是数据库

打开App,阅读手记
12人推荐
发表评论
随时随地看视频慕课网APP

热门评论

这么好的东西没人评论,我不服

这么好的东西没人评论,我不服

查看全部评论