MongoDB基本操作和使用

MongoDB数据库

MongoDB简介

MongoDB是什么?

MongoDB是一个由 C++ 语言编写的文档型数据库,属于非关系型数据库中的一种。旨在为 Web 应用提供可扩展的高性能数据存储解决方案。

为什么要学习MongoDB?

  1. 提供高效的数据存储
  2. 操作语法简单

MongoDB可以做什么?

  1. 数据存储

MongoDB和传统的数据库有啥区别?

MongoDB是文档型数据库,属于非关系型数据库中的一种。而传统的数据库,例如MySQL、Oracle都是数据关系型数据库。那么非关系型数据库和关系型数据库有啥区别?

NoSQL RDBMS
非结构化的数据 --> key-value 高度结构化的数据 --> 二维表
无结构化的查询语言 结构化的查询语言(SQL)
一般社区维护 官方团队
较为年轻 非常成熟

关系型数据库与mongodb对比

  1. 存储方面对比:在传统的关系型数据库中,存储方式是以表的形式存放,而在MongoDB中,以文档的形式存在。

在这里插入图片描述

  1. 数据库中的对应关系,及存储形式的说明 在这里插入图片描述

一些有用的资源

MongoDB入门学习

菜鸟教程-MongoDB

MongoDB安装和入门使用

MongoDB下载

下载地址:

MongoDB安装

参考【资料里面的 MongoDB 安装教程】

入门使用

MongoDB是一个C/S架构的软件。如果要使用 MongoDB ,则必须先启动 MongoDB 服务,然后在通过客户端进行操作。MongoDB默认在安装目录的 bin 目录下提供了一个 mongo.exe 的客户端命令,我们可以通过该命令来操作MongoDB。

MongoDB服务启动: Windows + r 键 打开命令行,输入如下的命令查看MongoDB的服务。

> services.msc

当服务启动后,则使用 mongo 命令进行操作

> mongo --host 127.0.0.1 --port 27017 

注意:如果是在本机,则可以省略 --host 和 --port

> mongo

总结:通过上面的操作我们基本了解了 MongoDB 的功能,接下来我们将学习更多的命令进行 MongoDB 的操作。

命令行操作MongoDB

数据库常用命令

  • Help 查看命令提示
    获取数据库级别的帮组
    > db.help();
    获取集合级别的帮组
    > db.集合名称.help();

  • 创建/切换数据库
    > use dbName;

  • 查询数据库
    > show dbs;

  • 显示当前 DB 状态
    > db.serverStatus();

  • 查看当前 DB 版本
    > db.version();

  • 查看当前 DB 的链接机器IP地址(客户端IP地址)
    >db.getMongo();

  • 删除数据库
    > use 待删除的数据库
    > db.dropDatabase();

Collection 聚集集合操作

  • 创建一个聚集集合
    > db.createCollection(集合名称);

  • 得到当前 db的所有聚集集合
    > show dbs;
    或者
    > show collections;

  • 显示当前 db 所有聚集的状态
    > db.集合名称.stats();

document 文档操作

  • 插入文档
    > db.集合名称.insert(对象或数组);

  • 获得当前 db 的所有文档
    > db.集合名称.find();
    格式化输出
    > db.集合名称.find().pretty();

  • 按条件获取文档
    > db.集合名称.find({查询的Field: 值});

  • 返回满足条件文档的指定字段
    > db.集合名称.find({查询的Field: 值}, {待显示的Field: 1, 不显示的Field: 0});

  • 更新文档
    db.集合名称.update({查询条件}, {$set: {待更新的记录}});

  • 删除文档
    db.集合名称.remove({删除条件});

  • 查询单条文档
    > db.集合名称.findOne();

聚合操作

  • 条件操作符

    • (>) 大于 - $
    • gt(<) 小于 - $
    • lt(>=) 大于等于 - $
    • gte(<= ) 小于等于 - $lte
  • 获取文档总数
    > db.集合名称.count();

  • Limit 与 Skip 方法
    > db.集合名称.find().limit(NUMBER).skip(NUMBER);

  • 排序

    • 可以使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

      db.集合名称.find().sort({排序字段:1})

  • 索引
    > db.users.ensureIndex({gender:1,user_name:1});

  • 查询分析

    • 查询分析可以确保我们所建立的索引是否有效,是查询语句性能分析的重要工具 。
    • 查询分析常用函数有:explain() 和 hint()
      db.集合名称.find(查询条件,显示字段).explain()
    • indexOnly: 字段为 true ,表示我们使用了索引。
    • cursor:因为这个查询使用了索引,MongoDB 中索引存储在B树结构中,所以这是也使用了
    • BtreeCursor 类型的游标。如果没有使用索引,游标的类型是 BasicCursor。这个键还会给出你所使用的索引的名称,你通过这个名称可以查看当前数据库下的system.indexes集合(系统自动创建,由于存储索引信息,这个稍微会提到)来得到索引的详细信息。
    • n:当前查询返回的文档数量。
    • nscanned/nscannedObjects:表明当前这次查询一共扫描了集合中多少个文档,我们的目的是,让这个数值和返回文档的数量越接近越好。
    • millis:当前查询所需时间,毫秒数。
    • indexBounds:当前查询具体使用的索引

Robo3T 使用

Robo3T 是什么?

Robo 3T是一个支持windows、Mac、Linux三个平台的mongo图形化客户端 。

官网:https://robomongo.org/

为什么要使用 Robo3T?

命令行工具操作MongoDB效率太低,所以使用图形化操作。

Robo3T的使用

  1. 安装
  2. 基本使用

Mongoose 操作 Mongodb

Mongoose 是什么?

Mongoose是一个对mongodb进行便捷操作的js工具包。

Mongoose 的使用

  1. 安装
  2. 使用

代码托管和webserver和apiserve部署

代码部署

webserver部署

apiserver部署

日常疑问?

  1. 常见的MongoDB可视化客户端有哪些?
  2. MongoDB登录授权处理该如何实现?

扩展

  1. studio 3t 和 robo 3t 之间有啥区别:https://www.oschina.net/p/robo+3t
发布了60 篇原创文章 · 获赞 19 · 访问量 5874

猜你喜欢

转载自blog.csdn.net/lff18277233091/article/details/104586566