一款基于分布式文件存储的数据库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({})
相关推荐
洛阳泰山20 小时前
Windows系统部署MongoDB数据库图文教程
数据库·windows·mongodb
yuanpan1 天前
MongoDB与PostgreSQL两个数据库的特点详细对比
数据库·mongodb·postgresql
白露与泡影1 天前
基于Mongodb的分布式文件存储实现
分布式·mongodb·wpf
孤的心了不冷1 天前
【Linux】Linux安装并配置MongoDB
linux·运维·mongodb·容器
好吃的肘子2 天前
MongoDB 应用实战
大数据·开发语言·数据库·算法·mongodb·全文检索
独泪了无痕2 天前
MongoTemplate 基础使用帮助手册
spring boot·mongodb
好吃的肘子2 天前
MongoDB入门
数据库·mongodb
柳如烟@3 天前
在Rocky Linux 9.5上部署MongoDB 8.0.9:从安装到认证的完整指南
linux·运维·mongodb
好吃的肘子3 天前
MongoDB 高可用复制集架构
数据库·mongodb·架构
码上飞扬3 天前
MongoDB数据库深度解析:架构、特性与应用场景
数据库·mongodb·架构