一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点
  • 面向集合存储,易存储对象类型的数据。
  • 模式自由。
  • 支持动态查询。
  • 支持完全索引,包含内部对象。
  • 支持查询。
  • 支持复制和故障恢复。
  • 使用高效的二进制数据存储,包括大型对象(如视频等)。
  • 自动处理碎片,以支持云计算层次的扩展性
  • 支持 RUBY,PYTHON,JAVA,C++,PHP 等多种语言。
  • 文件存储格式为 BSON(一种 JSON 的扩展)
  • 可通过网络访问
存储结构

MongoDB 中的记录就是一个 BSON 文档,它是由键值对组成的数据结构,类似于 JSON 对象,是 MongoDB 中的基本数据单元。字段的值可能包括其他文档、数组和文档数组。

  • 文档(Document) :MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行(Row)。

  • 集合(Collection) :一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。

  • 数据库(Database) :一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。

SQL 与 MongoDB 对比
SQL MongoDB
表(Table 集合(Collection)
行(Row 文档(Document)
列(Col) 字段(Field)
主键(Primary Key 对象 ID(Objectid)
索引(Index) 索引(Index)
嵌套表(Embeded Table) 嵌入式文档(Embeded Document)
数组(Array) 数组(Array)
使用方法
1.创建数据库
复制代码
use DATABASE_NAME
2.查看所有数据库
复制代码
show dbs
3.查看当前数据库
复制代码
db
4.切换数据库
复制代码
use DATABASE_NAME
5.删除数据库
复制代码
db.dropDatabase()
6.创建数据表
复制代码
db.createCollection("TABLES_NAME")
7.查看数据表
复制代码
show tables
show collections
8.删除数据表
复制代码
db.TABLES_NAME.drop()
9.表中插入数据
复制代码
db.TABLES_NAME.insert(document)
db.TABLES_NAME.save(document)
例:
复制代码
db.runoob.insert({"name":"菜鸟教程"})
或:
复制代码
document=({"name":"菜鸟教程","age":18})
db.runoob.insert(document)
10.查看表数据
复制代码
db.TABLES_NAME.find(query)
查多少条:
复制代码
db.TABLES_NAME.find().limit(NUMBER)
跳过多少条:
复制代码
db.TABLES_NAME.find().limit(NUMBER).skip(NUMBER)
格式化:
复制代码
db.TABLES_NAME.find(query).pretty()
排序(其中 1 为升序排列,而 -1 是用于降序排列):
复制代码
db.TABLES_NAME.find().sort({KEY:1})
MongoDB 与 SQL Where 语句比较:
操作 格式 范例 SQL Where 语句
等于 {:} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
小于 {:{$lt:}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {:{$lte:}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {:{$gt:}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {:{$gte:}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {:{$ne:}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
例:
复制代码
db.col.find({"name":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
db.col.find({$or:[{"name":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
db.col.find({"likes": {$gt:50}, $or: [{"name": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
11.修改表数据
复制代码
db.TABLES_NAME.update(query,update,{upsert,multi,writeConcern})
db.TABLES_NAME.save(document,{writeConcern})
参数说明:

query : update的查询条件,类似sql update查询内where后面的。

update : update的对象和一些更新的操作符(如 , , ,inc...)等,也可以理解为sql > update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true> 为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

例:
复制代码
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
db.col.save({"_id" : ObjectId("56064f89ade2f21f36b03136"),"title" : "MongoDB"})
12.删除表数据
复制代码
db.collection.remove(query,{justOne,writeConcern})
参数说明:

query :(可选)删除的文档的条件。

justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。

writeConcern :(可选)抛出异常的级别

例:
复制代码
db.col.remove({'title':'MongoDB 教程'})
db.col.remove({'title':'MongoDB 教程'},1)
13.清空表数据
复制代码
db.col.remove({})
相关推荐
知识分享小能手11 小时前
MongoDB入门学习教程,从入门到精通,MongoDB查询(4)
数据库·学习·mongodb
知识分享小能手1 天前
MongoDB入门学习教程,从入门到精通,MongoDB创建、更新和删除文档(3)
数据库·学习·mongodb
爬山算法2 天前
MongoDB(60)如何使用explain命令?
数据库·mongodb
知识分享小能手2 天前
MongoDB入门学习教程,从入门到精通,MongoDB入门指南 —— 知识点详解(2)
数据库·学习·mongodb
vpk1123 天前
使用 Docker Compose 快速安装 MongoDB
mongodb·docker·容器
爬山算法3 天前
MongoDB(55)如何监控分片集群?
数据库·mongodb
vpk1123 天前
Docker Compose 部署 Yapi(连接本地MongoDB)
mongodb·docker·yapi
jianqiang.xue4 天前
ESP32-S3 运行 Linux 全指南:从 RISC-V 模拟器移植到 8 秒快速启动
linux·stm32·单片机·mongodb·risc-v·esp32s3
知识分享小能手4 天前
MongoDB入门学习教程,从入门到精通,MongoDB 知识点详解(1)
数据库·学习·mongodb
爬山算法6 天前
MongoDB(52)如何配置分片?
数据库·mongodb