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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 一款基于分布式文件存储的数据库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})
• 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({})
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
21天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
2天前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
29 15
|
1月前
|
存储 NoSQL MongoDB
MongoDB入门级别教程全(Windows版,保姆级教程)
一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
58 2
MongoDB入门级别教程全(Windows版,保姆级教程)
|
1月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
79 4
|
1月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
66 2
|
1月前
|
存储 JSON NoSQL
MongoDB Compass 的教程
这篇文章提供了MongoDB Compass的基本使用教程,包括如何建立数据库连接、创建和删除数据库、插入和修改文档数据,以及执行聚合查询来分析和排序数据。
131 0
MongoDB Compass 的教程
|
26天前
|
存储 JSON NoSQL
MongoDB 教程
10月更文挑战第9天
33 0
|
1月前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
29 0
|
存储 运维 监控
阿里云的文件存储NAS使用心得
阿里云的文件存储NAS使用心得
369 0
|
存储 弹性计算 固态存储
阿里云服务器1TB存储收费标准(数据盘/对象存储OSS/文件存储NAS)
阿里云服务器1TB存储多少钱?系统盘最大可选到500GB,数据盘选到1TB价格为3655元一年。也可以选择对象存储OSS和文件存储NAS
6234 2
阿里云服务器1TB存储收费标准(数据盘/对象存储OSS/文件存储NAS)