MongoDB基本操作

一、MongoDB概述

1.MongoDB简介

MongoDB 是一个开源的、跨平台的、面向文档的、基于分布式文件存储的数据库系统,MongoDB 是由 C++ 语言开发,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。

MongoDB 常常被归类为 NoSQL 数据库系统,也是当前 NoSQL 数据库中比较热门的一种。

2、MongoDB 特点

MongoDB 作为非关系性文档数据库有着以下几个主要特点:

  1. 高性能:MongoDB 提供了高性能的数据持久化方式,包括了对嵌入式数据模型的支持(减少了数据库系统上的 I/O 操作)。对更多的索引类型的支持(更快的查询),并且可以包含来自嵌入式文档和数组的键;
  2. 高可用:MongoDB 的复制工具(称为副本集)提供:自动故障转移、数据冗余。副本集是一组维护相同数据集合的 MongoDB 实例,提供了冗余和提高了数据可用性;
  3. 水平拓展:MongoDB 提供水平可伸缩性作为其核心功能的一部分:分片将数据分布在一个集群的机器上。从 3.4 开始,MongoDB 支持基于分片键创建数据区域。在平衡群集中,MongoDB 仅将区域覆盖的读写定向到区域内的那些分片;
  4. 丰富的查询语言:MongoDB 支持丰富的查询语言以支持读写操作(CRUD)以及:数据聚合、文本搜索和地理空间查询;
  5. 支持多种存储引擎:MongoDB支持多个存储引擎:WiredTiger 存储引擎(包括对静态加密的支持 )、内存存储引擎。 另外,MongoDB 提供可插拔的存储引擎 API,允许第三方为 MongoDB 开发存储引擎。

3、MongoDB 数据逻辑结构

MongoDB的一个实例,由多个数据库(Database)组成;一个数据库,由多个集合(Collection)组成;一个集合,又由多个文档(Document)组成!

MongoDB数据库里是存在有数据库的概念,但是没有模式(所有的信息都是按照文档保存的),保存数据的结构就是JSON结构,只不过在进行一些数据处理的时候,才会使用MongoDB自己的一些操作符号。

cls命令可以清屏幕

二、数据库操作

新建数据库

语法:

use DATABASE_NAME

use:用于切换/创建数据库,若不存在则创建,否则切换到指定数据库。

DATABASE_NAME:数据库的名称。

如执行use test命令,创建数据库test

查看数据库

查看全部数据库:

show dbs

查看当前数据库,需要先切换到指定数据库

db

删除数据库

语法:

db.dropDatabase()

三、集合操作

创建集合

语法db.createCollection(name,options)方法创建集合。name是要创建的集合的名称,options是一个可选参数,用于指定集合的配置选项,

如:创建一个名为"myCollection"的普通集合

db.createCollection("myCollection")

删除集合

语法:

db.createCollection("myCollection")

如执行"db.myCollection.drop()"命令,删除集合myCollection

文档操作

单文档插入

db.COLLECTION_NAME.insert(document)

或者

db.COLLECTION_NAME.save(document)

多文本插入

db.COLLECTION_NAME.insertMany([document1,document2,.....])

insert()与save()方法的区别在于,若使用insert()方法插入文档时,集合中已存在该文档,则会报错。若使用save()方法插入文档时,集合中已存在该文档,则会覆盖。

插入如下学生信息:

{name:"张三", age:18, sex:"男",major:"大数据技术"},

{name:"李四", age:19, sex:"男",major:"大数据技术"},

{name:"王五", age:18, sex:"女",major:"人工智能"}

使用insert()方法

db.student.insert( {"name":"王五"," age":"18","sex":"女","major":"人工智能"})

使用insertMany([])方法

db.student.insertMany( [{"name":"张三", "age":"18", "sex":"男","major":"大数据技术"}, {"name":"李四"," age":"19","sex":"男","major":"大数据技术"}, {"name":"王五"," age":"18","sex":"女","major":"人工智能"}]))

执行“db.student.find()”命令,查看集合student中的文档内容

文档更新

更新单个文档

db.collection_name.updateOne()

db.collection_name.updateOne(   { key1: value1 }, // 查询条件 

{ $set: { key2: value2 } } // 更新操作);

/更新多个文档

db.collection_name.updateMany()

db.collection_name.updateMany(  { key1: value1 }, // 查询条件

{ $set: { key2: value2 } } // 更新操作);

升级语法

db.集合名.update(条件,新数据) {修改器:{键:值}}
修改器作用
$inc递增
$rename重命名列
$set修改列值
$unset删除列

案列说明

1.将{major:"人工智能"}修改为{major:"大数据技术"}

db.student.update({"major":"人工智能"},{$set:{"major":"大数据技术"}})

发现:默认不是修改,而是替换

解决:使用升级语法修改器

2.给{name:"张三"}的年龄加2岁或减2岁

db.student.update({"name":"张三"},{"$inc":{"age":2}})
db.student.update({"name":"张三"},{"$inc":{"age":-2}})

文档删除

删除单个文档

db.COLLECTION_NAME.remove()

删除多个文档

db.COLLECTION_NAME.remove({})
  • db:当前数据库对象
  • COLLECTION_NAME:当前集合对象
  • remove():删除文档的条件,可选参数

删除集合student中键nickname为"Rose"的文档,具体操作命令如下

db.student.remove({"nickname":"Rose"})

查看集合中所有文档,验证文档是否删除成功,具体操作命令如下

db.student.find()

删除集合commet中全部文档,具体操作命令如下

db.student.remove({})

再次查看集合中所有文档,验证文档是否全部删除,具体操作命令如下

db.student.find()

文档简单查询

查询所有文档语法

db.COLLECTION_NAME.find()

查询所有文档,以易读的方式展示

db.COLLECTION_NAME.find().pretty()
  • db:当前数据库对象
  • COLLECTION_NAME:当前集合对象
  • find():查询所有文档的方法
  • pretty():格式化查询返回结果

按条件查询文档

基础语法:db.集合名.find(条件[,查询的列])

查询age为4,只显示它的姓名;

升级语法

db.集合名.find({键:值}) 注:值可以不直接写
{运算符:值}
db.集合名.find({
键:{运算符:值}
})
运算符

作用

$gt大于
$gte大于等于
$lt小于
$lte小于等于
$ne不等于
$inin
$ninnot in

1.查询年龄大于5岁的数据

db.c1.find({age:{$gt:5}})

2.查询年龄是18岁、20岁、25岁的数据

db.c1.find({age:{$in:[18,20,25]}})

总结

db.集合名.insert(JSON数据)
db.集合名.remove([条件,是否删除一条true是false否默认])
也就是默认删除多条
db.集合名.update(条件, 新数据[,是否新增,是否修改多余条])
升级语法
db.集合名.update(条件,{修改器:{键:值}})
db.集合名.find(条件[,查询的列])

四、聚合操作

聚合操作是数据处理的一种方法,它涉及对一组数据执行计算,以返回总结性信息,如统计、分析或其他类型的汇总。聚合操作通常用于数据库和大数据环境中,以处理和转换大量数据。

  • 单一作用聚合:提供了对常见聚合过程的简单访问,操作都从单个集合聚合文档。
  • 聚合管道是一个数据聚合的框架,模型基于数据处理流水线的概念。文档进入多级管道,将 文档转换为聚合结果。
  • MapReduce操作具有两个阶段:处理每个文档并向每个输入文档发射一个或多个对象的map阶段,以及reduce组合map操作的输出阶段

常见管道操作符如下表

常见管道操作符相关说明
$group将集合中的文档进行分组,便于后续统计结果
$limit用于限制MongoDB聚合管道返回的文档数
$match用于过滤数据,只输出符合条件的文档
$sort将输入的文档先进行排序,再输出
$project用于修改输入文档的结构(增加、删除字段等)和名称
$skip在聚合管道中跳过指定数量的文档,并返回剩余的文档

  • 32
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值