MongoDB 基础知识

一、为什么学习MongoDB

MongoDB解决Mysql 的“三高”问题:

1.对数据库高并发写入需求

2.对海量数据高效率存储访问需求

3.对数据库高扩展和高可用的需求

MongoDB 实际应用:

1.社交场景,比如朋友圈,附近的人的地点的存储

2.游戏场景,比如用户当前装备,得分等

3.物流场景,比如快递的位置,状态,途径

4.视频场景,比如直播中的点赞数和互动留言等

二、MongoDB的缺点

1. MongoDB 不支持事务

2. MongoDB 不能进行多表联查 

三、MongoDB名词概念 

三、MongoDB数据库显示

//查看磁盘上的所有库名
show dbs;

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

•admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数 据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

•local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

•config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。 

 四、MongoDB数据库创建/删除

//创建使用库
use myschool;//查看当前库对象
db;

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

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

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

//删除库
db.dropDatabase();

五、MongoDB操作集合

//当前库中创建集合、表
db.createCollection('student');
db.createCollection('teacher');//查看当前库中的集合、表
show collections;
show tables;//删除集合
db.teacher.drop();

六、 MongoDB数据类型

七、MongoDB在集合中插入数据

//插入数据
db.student.insert({shuai: true,money: true,gf: [{ stuname: '小红' }, { stuname: '小黑' }]}
)
db.student.insert({ stuname: '张三', age: 16 })
db.student.insert({ stuname: '李四', age: 17 })
db.student.insert({ stuname: '王五', age: 16 })
db.student.insert({ stuname: '赵六', age: 18 })
db.student.insert({ stuname: '哈哈', age: '19' })
db.student.insert({ stuname: '赵六六', age: 18 })
db.student.insert({ stuname: '六六', age: 20 })
db.student.insert({ stuname: '六小龄童', age: 20 })
db.student.insert({ stuname: '刘小', age: 20 })
db.student.insert({ stuname: '小小', age: 21 })

插入的数据被称为文档。

文档的数据结构和 JSON 基本一样。

所有存储在集合中的数据都是 BSON 格式。

BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

db.集合名.insert(document)

db.col.insert({title: '一些数据',

description: 'MongoDB 是一个 Nosql 数据库',

tags: ['mongodb', 'database', 'NoSQL']

}) 

八、MongoDB在集合中更新数据

//修改数据
use myschool;//修改如果有多个结果符合条件时,只改_id最小的一个
db.student.update({ stuname: '赵六' },  //条件{ $set: { age: 18 } }
);//{mutil:true} 把所有符合条件的都修改
db.student.update({ stuname: '赵六' },  //条件{ $set: { age: 25 } },{ multi: true }
);
db.student.insert({ stuname: '赵六', age: 20 })//{upsert:true}没有匹配到的数据作为新增值的主键
db.student.update({ stuname: '小张' },{ $set: { age: 20 } },{ upsert: true }
);//数值改变(点赞!!!)
db.student.update({ stuname: '小张' },{ $inc: { age: -50 } }
);

更新数据

语法:

db.集合名.update({查询条件},{$set:{更新内容}},

{

         upsert:<boolean>,

        multi: <boolean>,

}

)

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

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

更新数据
如果我们想实现在某一列上在原有的值基础之上进行递增1效果可以用$inc运算符来实现
语法:
db.集合名.update({查询条件},{$inc:{字段名:NumberInt(1)}})

九、MongoDB在集合中删除文档

//删除数据
//全部删除
db.student.remove({});//带条件删除
db.student.remove({ stuname: '张三' });//注意
db.student.remove({ age: 60 });
//主键编号较小的一条数据
db.student.remove({ age: 16 }, { justOne: true });
db.student.remove({ age: '19' }, { justOne: true });

删除文档:

db.集合名称.remove(

        <query>,

{
justOne: <boolean>

}

删除所有数据: db.col.remove({})

删除一条数据 db.col.remove({“name”:”张三”},{justOne:true})

删除多条数据 db.col.remove(“name”:”张三”})

十、MongoDB在集合中查询文档

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

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

db.collection.find(query) pretty() 方法以格式化的方式来显示所有文档,linux下有用。 >db.col.find().pretty() 

//查询
//全查
db.student.find();//根据条件查询
db.student.find({ stuname: '赵六' });
//age 小于20岁的人
db.student.find({ age: { $lt: 20 } });//age 大于等于18并且age1小于等于60
db.student.find({age: { $gte: 18, $lte: 60 },});

十一、MongoDB查询条件(1)

十二、MongoDB的 And条件

//或$or
db.student.find({$or: [{ age: { $gte: 18 } },{ age: { $lte: 60 } }]});

十三、MongoDB范围条件

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

> db.col.find({“key” : {$lt :200, $gt : 100}})

相当于RDBMS:

Select * from col where key>100 AND key<200;

十四、MongoDB的模糊查 

//模糊查询
//:/开始/结束
db.student.find({stuname:/六/});
db.student.find({stuname:/^六/});
db.student.find({stuname:/六$/});

十五、MongoDB的Limit 和 Skip操作

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

> db.col.find().limit(NUMBER)

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

> db.col.find().limit(NUMBER).skip(NUMBER) 

//分页
//limit(步长)
//skip((页码-1)*步长)
db.student.find().limit(2).skip((3-1)*2);

十六、MongoDB的统计

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

>db.col.count(【{key:value}】)

//统计
db.student.find({stuname:'赵六'}).count();

 十七、MongoDB的排序

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

//排序sort()
//1升序
//-1降序
db.student.find().sort({age:1});
db.student.find().sort({age:-1});

十八、MongoDB的索引

//索引
db.student.getIndexes();//创建索引
db.student.createIndex({age:1});
db.student.createIndex({age:-1});//删除索引
db.student.dropIndex({age:1});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386852.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA开发笔记】Reids下载、安装、配置-Windows篇(超详细,含Redis可视化管理工具!!!)

目录 1. Redis 简介 2. 下载 Redis 安装包 3. 开启 Redis 服务 4. 配置环境变量 5. Redis 服务注册为系统服务 6. Redis 服务测试和简单使用 7. 下载安装 Redis 管理工具 8. 管理工具连接 Redis 服务器 1. Redis 简介 Redis&#xff08;Remote Dictionary Server&…

SpringBoot 整合 Redis 实现验证码登录功能

一、整合Redis 在pom.xml中添加Redis相关依赖&#xff1b; <!--Spring Data Redis依赖配置--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>…

永结无间Ⅵ--第一支AI测试团队

我们都梦想拥有一支 AI 测试团队。每个工程团队都应该测试他们的应用程序&#xff0c;但测试速度慢、成本高&#xff0c;而且很少能提供足够的覆盖范围。大多数团队几乎没有测试。专门的测试人员或供应商往往会忽略测试的许多方面。测试人员希望专注于测试中有趣且重要的方面&a…

WPF的MVVM架构:如何通过数据绑定简化UI逻辑

WPF的MVVM架构&#xff1a;如何通过数据绑定简化UI逻辑 目录 MVVM模式概述数据绑定在MVVM中的作用实现MVVM模式的步骤MVVM模式中的常见问题与解决方案实践示例总结 MVVM模式概述 MVVM&#xff08;Model-View-ViewModel&#xff09;是一种设计模式&#xff0c;用于WPF应用程序…

Navidrome音乐服务器 + 音流APP = 释放你的手机空间

20240727 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; Navidrome音乐服务器 Demo试用&#xff1a; 支持多平台&#xff1a; 下载&#xff1a; 修改配置&#xff1a; 设置用NSSM成服务启动&#xff1a; 服务器本地访问网址&#xff1a; 音流 歌词封面API&am…

HTML+CSS+JavaScript实现烟花绽放的效果源码

源码 复制粘贴代码 在同级别下放一张图片fire.png接可以了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议&#xff0c;并完成了初稿。 本周继续修改论文&#xff0…

【Qt】QLCDNumberQProgressBarQCalendarWidget

目录 QLCDNumber 倒计时小程序 相关属性 QProgressBar 进度条小程序 相关设置 QLCDNumber QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值&#xff0c;例如时钟、计时器、计数器等 常用属性 属性说明intValueQLCDNumber显示的初始值(int类型)va…

Hbase简介和快速入门

一 Hbase简介 1 HBase定义 Apache HBase™ 是以hdfs为数据存储的&#xff0c;一种分布式、可扩展的NoSQL数据库。 2 HBase数据模型 HBase的设计理念依据Google的BigTable论文&#xff0c;论文中对于数据模型的首句介绍。Bigtable 是一个稀疏的、分布式的、持久的多维排序map…

【JAVA学习笔记】找不到依赖项 ‘org.springframework.boot:spring-boot-starter-web:3.0.5‘

如果环境都是跟着教程配的话&#xff0c;并且上网搜了一圈询问gpt都没发现对应长得像的错误&#xff0c;那么试试刷新一下Maven项目&#xff0c;可能问题就自己解决了。如果这样解决不了再查到底是什么地方没有配置对。 &#xff08;我第一次遇到这个问题的时候搜了半天都不知…

【ROS 最简单教程 002/300】ROS 集成开发环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

【Windows】Mountain Duck(FTP服务器管理工具)软件介绍

软件介绍 Mountain Duck是一款基于Cyberduck开发的应用程序&#xff0c;它允许用户通过FTP、SFTP、WebDAV、S3和OpenStack Swift等协议连接到云存储和远程服务器&#xff0c;并在本地文件浏览器中以熟悉的方式访问和管理这些文件。 功能特点 支持多种协议: Mountain Duck支持…

Unity和WebGL交互-2024/7/30

进入项目 1 新建一个.jslib的文件 2 放到项目内Plugins文件夹下 3 可以用vscode之类的编译器打开这个文件 编写内容 mergeInto(LibraryManager.library, {// 方法名必须和c#中的相同// 有参数 需要用UTF8ToString&#xff08;&#xff09;OnInitSDK:function(str) {window.OnIn…

vue自写组件可输入,可下拉选择,因为el-autocomplete数据多了会卡

<!-- 引入组件 --><AutoCompletev-model"scope.row.strreceivername":lngemployeeid"scope.row.lngreceiverid"select"handleSelect($event,scope.row)"/> methods:{handleSelect(item, row) {row.lngreceiverid item.lngemployeei…

项目实战——外挂开发(30小时精通C++和外挂实战)

项目实战——外挂开发&#xff08;30小时精通C和外挂实战&#xff09; 外挂开发1-监控游戏外挂开发2-秒杀僵尸外挂开发3-阳光地址分析外挂开发4-模拟阳光外挂开发5-无限阳光 外挂开发1-监控游戏 外挂的本质 有两种方式 1&#xff0c;修改内存中的数据 2&#xff0c;更改内存中…

从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构 Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展&#xff0c;Web架构也在不断演进。当前&#xff0c;最常用的Web架构包括以下几种&#xff1a; 单页面应用&#xff08;SPA&#xff09;&#xff1a; 特点&#xff1a;所有用户界面逻辑和数据处理都包含…

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作者&#xff1a;王恩策、徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台&#xff0c;基于字节跳动数据平台多年的“数据…

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些 cookiesessionurl重写隐藏inputip地址 JS基本数据类型 String&#xff1a;用于表示文本数据。Number&#xff1a;用于表示数值&#xff0c;包括整数和浮点数。BigInt&#xff1a;用于表示任意精度的整数。Boolean&#xff1a;用于表示逻辑值…

认证授权概述和SpringSecurity安全框架快速入门

1. 认证授权的概述 1.1 什么是认证 进入移动互联网时代&#xff0c;大家每天都在刷手机&#xff0c;常用的软件有微信、支付宝、头条、抖音等 以微信为例说明认证的相关基本概念。在初次使用微信前需要注册成为微信用户&#xff0c;然后输入账号和密码即可登录微信&#xff0c…

git 推送时出现错误 Locking support detected on remote “origin“

背景&#xff1a;代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番&#xff0c;其中有人提到可能时服务器磁盘满了&#xff0c;连到服务器上 df -h 查看&#xff0c; 发现根目录已经写满了&#xff1a; 使用命令行&#xff1a; d…