MongoDB的操作和理解

什么是MongoDB?

MongoDB:基于分布式文件存储的数据库由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB的优点:

  1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

  2. 如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

  3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

  4. 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

为什么学习MongoDB?

MongoDB解决Mysql 的"三高"问题:

  1. 对数据库高并发写入需求
  2. 对海量数据高效率存储访问需求
  3. 对数据库高扩展和高可用的需求

MongoDB的缺点:

  • MongoDB 不支持事务
  • MongoDB 不能进行多表联查

MongoDB名词概念

SQL术语 MongoDB术语 解释说明
database database 数据库
table collection 数据库表
row document 数据记录行
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键啊,MongoDB自动将_id字段设置为主键

MongoDB数据库创建/删除

创建数据库: use dbname

如果数据库不存在,则创建数据库,否则切换到指定数据库。

在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

通过 db 来查看当前使用的数据库

删除数据库

db . dropDatabase()

MongoDB操作集合

  • 创建集合:

    复制代码
    db.createCollection("集合名")
  • 查看集合:

    复制代码
    show collections / show tables
  • 删除集合:

    复制代码
    db.集合名.drop()

MongoDB在集合中插入数据

  • 插入的数据被称为文档。
  • 文档的数据结构和 JSON 基本一样。
  • 所有存储在集合中的数据都是 BSON 格式。
  • BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。
json 复制代码
db.col.insert({title: '一些数据', 
	description: 'MongoDB 是一个 Nosql 数据库',
	tags: ['mongodb', 'database', 'NoSQL']
})

MongoDB在集合中更新数据

更新数据:

json 复制代码
db.集合名.update({查询条件},{$set:{更新内容}},
	{
		upsert: <boolean>,
		multi: <boolean>,
	}
)

upsert: 默认为false ,如果查询不到数据,则把跟新输入插入

multi:默认为false,默认只改一条,true,更改多条

json 复制代码
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{multi:true})
db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{upsert:true,multi:true})

MongoDB在集合中删除文档

  • 删除文档:

    复制代码
    db.集合名称.remove(
    	<query>,
    	{
    		justOne: <boolean>
    	}
    )
  • 删除所有数据:

    json 复制代码
    db.col.remove({})
  • 删除一条数据:

    json 复制代码
    db.col.remove({"name":"张三"},{justOne:true})
  • 删除多条数据

    json 复制代码
    db.col.remove("name":"张三"})

MongoDB在集合中查询文档

  • MongoDB 查询文档使用 find() 方法。

  • find() 方法以非结构化的方式来显示所有文档。

    复制代码
    db.collection.find(query)
  • pretty() 方法以格式化的方式来显示所有文档,linux下有用。

    复制代码
    db.col.find().pretty()
MongoDB查询条件
MongoDB的 And条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

复制代码
db.col.find({key1:value1, key2:value2})
MongoDB的 Or条件

MongoDB OR 条件语句使用了关键字 $or

json 复制代码
db.col.find(
	{
		$or: [
			{key1: value1}, {key2:value2}
		]
	}
)
MongoDB的 And 与 Or 一起使用

AND 和 OR 联合使用,类似常规 SQL 语句为:

复制代码
where key1>value1 AND (key2 = value2 OR key3 = value3)

db.col.find({"key1": {$gt:value1}, $or: [{"key2": "value2"},{"key3": "value3"}]})
MongoDB范围条件

col"集合中 "key" 大于100,小于 200 的数据

复制代码
> db.col.find({"key" : {$lt :200, $gt : 100}})

相当于RDBMS:

复制代码
Select * from col where key>100 AND key<200;
MongoDB的模糊查询
  • 查询 name 包含"小"字的文档:

    复制代码
    db.col.find({"name":/小/})
  • 查询 name 字段以"小"字开头的文档:

    复制代码
    db.col.find({"name":/^小/})
  • 查询 name字段以"小"字结尾的文档:

    复制代码
    db.col.find({"name":/小$/})
MongoDB的Limit 和 Skip操作

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

复制代码
> db.col.find().limit(NUMBER)

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

复制代码
> db.col.find().limit(NUMBER).skip(NUMBER)
MongoDB的统计

在 MongoDB 中使用count() 来统计个数

复制代码
>db.col.count(【{key:value}】)
MongoDB的排序

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

复制代码
>db.col.find().sort({KEY:1})

``

MongoDB的统计

在 MongoDB 中使用count() 来统计个数

复制代码
>db.col.count(【{key:value}】)
MongoDB的排序

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

复制代码
>db.col.find().sort({KEY:1})
相关推荐
老邓计算机毕设2 小时前
SSM学生选课系统xvbna(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学生选课系统·ssm 框架·高校教学管理
枷锁—sha3 小时前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
Mr'liu5 小时前
MongoDB 7.0 副本集高可用部署
linux·mongodb
逍遥德5 小时前
PostgreSQL 中唯一约束(UNIQUE CONSTRAINT) 和唯一索引(UNIQUE INDEX) 的核心区别
数据库·sql·postgresql·dba
工业甲酰苯胺5 小时前
字符串分割并展开成表格的SQL实现方法
数据库·sql
科技块儿5 小时前
IP定位技术:游戏反外挂体系中的精准识别引擎
数据库·tcp/ip·游戏
衫水5 小时前
[特殊字符] MySQL 常用指令大全
数据库·mysql·oracle
卓怡学长5 小时前
m115乐购游戏商城系统
java·前端·数据库·spring boot·spring·游戏
小句6 小时前
SQL中JOIN语法详解 GROUP BY语法详解
数据库·sql
阿杰 AJie7 小时前
MySQL 里给表添加索引
数据库·mysql