Mongodb学习笔记,远程连接数据库
注意现阶段6版本可能会有问题按装5版本即可目录一. 连接方式shell连接图像化界面连接二. 数据库的创建和删除。常用命令三. 集合的创建和删除1. 集合的显示创建四. 文档的 增删改查1. 插入数据find(1). 向 comment 的集合(表)中插入一条数据(2). 向 comment 的集合(表)中批量插入数据2. 查询数据3. 更新数据4. 删除数据五. 文档的分页查询1. 统计查询count()2. 分页列表查询limit() skip()3. 排序查询sort() 方法对数据进行排序4. 正则的复杂条件查询通过 js语法的正则 实现5. 比较查询通过“ ! 常用操作符”6. 包含不包含查询 $in $nin7. 条件连接查询与 ($and) 和 或 ($or)8. 查询所有存在或不存在 某个 字段的数据六、数据库数据的导出、导入、备份、恢复1、导出。(mongoexport)2、数据导入。(mongoexport)3、数据备份。(mongodump)4、数据恢复。(mongorestore)七、常用命令小结。MongoDB的简介它是一个以JSON 为数据模型的文档数据库由上市公司 MongoDB Inc 开发, 总部位于美国纽约。特点建模为可选 JSON数据模型比较适合开发者横向扩展可以支持很大数据量和并发。为什么叫文档数据库文档来自于 “ JSON Document” 并非我们一般理解的 POF, WORD文档技术优势JSON 结构和对象模型接近开发代码量低JSON 的动态模型意味着更容易响应新的业务需求复制集提供 99.999% 高可用分片架构支持海量数据和无缝扩容一. 连接方式配置的快捷启动net start MongoDBshell连接1. mongo2.mongo --host网址 --port端口号[27017]连接远程数据库(新版)终端mongosh --host IP地址:27017 -u 用户名-p 密码后台/** 账号密码(root) * IP地址11.111.111.111 * 用户名root * 用户密码8ZTFhPNbE */ mongodb://root:8ZTFhPNbE11.111.111.111:27017/blogger?authSourceadmin // 无密码 mongodb://11.111.111.111:27017/blogger?authSourceadmin注意用户名用 root 密码用红框root密码。而非篮框图像化界面连接二. 数据库的创建和删除。常用命令1. 创建数据库若存在次数据库则直接切换到这个数据库use 数据库名注意创建的数据库存放在内存中 但如果里面有集合(不为空)它会持久化到磁盘2. 查看所有有权限查看的所有数据库show dbs或show databases注意查看的是磁盘里的 。admin从权限的角度来看这是root数据库。要是将一个用户添加到这个数据库这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行比如列出所有的数据库或者关闭服务器。local这个数据永远不会被复制可以用来存储限于本地单台服务器的任意集合config当Mongo用于分片设置时config数据库在内部使用用于保存分片的相关信息。3. 查看当前使用的数据库dbMongoDB中默认的数据库为 test 如果你没有选择数据库集合讲存放在 test数据库中4. 删除数据库db.dropDatabase()三. 集合的创建和删除1. 集合的显示创建创建语法db.createCollection(集合名)查看当前库中的集合(表)show collections或show tables集合的删除 返回一个布尔值db.collection.drop()或db.集合名.drop()四. 文档的 增删改查1. 插入数据find(1). 向comment 的集合(表)中插入一条数据db.comment.insert({myid:123,username:干得漂亮})注意comment 集合如果不存在则会隐式创建mongo中的数字默认情况下是 double 类型如果要存整型必须使用函数 NumberInt(整型数字), 否则取出来就有问题。插入当前日期使用 new Date()插入的数据没有指定_id ,会自动生成主键值如果某字段没值可以赋值为 null 或不写改字段执行成功后如下 说明插入一个数据成功了。(2).向comment 的集合(表)中批量插入数据语法db.comment.insertMany([ document1 , document2] ,{writeConcern: document,ordered: boolean})参数ParameterTypeDescriptiondocumentdocument要插入到集合中的文档或文档数组。((json格式)writeConcerndocument可选。性能和可靠性的级别orderedboolean可选。一个布尔值指定Mongod实例应执行有序插入还是无序插入。默认为true。是否排序执行成功后如下 说明插入一个数据成功了。注意批量插入数据如果某条数据插入失败将会终止插入但已经插入成功的数据不会回滚掉因此我们可以使用 try catch 进行异常捕捉处理测试的时候可以不处理try { db.comment.insertMany([ {_id:1,articleid:100001,content:我们不应该把清晨浪费在手机上健康很重要一杯温水幸福你我 他。,userid:1002,nickname:相忘于江湖,createdatetime:new Date(2019-08- 05T22:08:15.522Z),likenum:NumberInt(1000),state:1}, {_id:2,articleid:100001,content:我夏天空腹喝凉开水冬天喝温开水,userid:1005,nickname:伊人憔 悴,createdatetime:new Date(2019-08-05T23:58:51.485Z),likenum:NumberInt(888),state:1}, {_id:3,articleid:100001,content:我一直喝凉开水冬天夏天都喝。,userid:1004,nickname:杰克船 长,createdatetime:new Date(2019-08-06T01:05:06.321Z),likenum:NumberInt(666),state:1}, {_id:4,articleid:100001,content:专家说不能空腹吃饭影响健康。,userid:1003,nickname:凯 撒,createdatetime:new Date(2019-08-06T08:18:35.288Z),likenum:NumberInt(2000),state:1}, {_id:5,articleid:100001,content:研究表明刚烧开的水千万不能喝因为烫 嘴。,userid:1003,nickname:凯撒,createdatetime:new Date(2019-08- 06T11:01:02.521Z),likenum:NumberInt(3000),state:1} ]); } catch (e) { print (e); }2. 查询数据语法格式db.collection.find( query , projection )参数:ParameterTypeDescriptionquerydocument可选。使用查询运算符指定选择筛选器若要返回集合中的所有文档请省略次参数或传递空文档{}。projectiondocument可选。指定要在查询筛选器匹配的文档中返回的字段若要返回匹配文档中的所有字段请省略此参数只查看存在这个字段和字段值的所有数据add:hhhdb.comment.find( {add:hhh} )只查看存在这个字段和字段值的第一条数据add:hhhdb.comment.findOne( {add:hhh} )只查看这条数据的部分字段add:hhh默认显示 _id 去除 { _id:0}db.comment.find( {add:hhh},{aaa: 1})3. 更新数据语法db.comment.update()覆盖更新这条数据中处理这个字段其它的都没了修改 _id为1 的数据的点赞量为666db.comment.update( {_id:1} , {likenum: NumberInt(666)} )局部更新使用修改器$set:{}来实现修改 _id为2 的数据的点赞量为28db.comment.update( {_id:2}, {$set:{likenum: NumberInt(20)}} )批量更新:{multi:true}更新用户名为 1003 的所有用户//默认只修改第一条数据db.comment.update({userid:1003},{$set:{nickname:张三}})//修改所有符合条件的数据db.comment.update({userid:1003},{$set:{nickname:张三}},{multi:true})列值增长的修改实现对某列值在原基础上进行增加或减少可以使用$inc运算符 来实现 。正负值db.comment.update({_id:3},{$inc:{likenum:NumberInt(1)}})4. 删除数据删除文档语法结构db.集合名.remove(条件)删除全部的数据慎用db.comment.remove({})删除 _id 1 的记录db.comment.remove({_id:1})五. 文档的分页查询1. 统计查询count()统计查询使用 count()方法语法如下db.comment.count( query , options)参数统计 comment 集合的所有记录数db.comment.count()按条件统计记录数db.comment.count({userid:1003})2. 分页列表查询limit() skip()使用limit()方法来读取前面指定数量的数据默认值20db.comment.find().limit(2)skip()方法接受一个数字参数作为跳过前面的记录条数。前N个不要, 默认值是0db.comment.find().skip(3)跳过前面2条记录返回3条记录db.comment. find().limit(3).skip(2)3.排序查询sort() 方法对数据进行排序参数1升序 -1降序db.集合名称.find().sort(排序方式)例如对userid降序排列并对访问量进行升序排列db.comment.find().sort({userid:-1,likenum:1})注意skip(), limilt(), sort()三个放在一起执行的时候执行的顺序是先sort(),然后是skip()最后是显示的limit()和命令编写顺序无关。4. 正则的复杂条件查询通过 js语法的正则 实现db.collection.find({field:/正则表达式/})或db.集合.find({字段:/正则表达式/})例查询包含 “”某某“” 的所有文档db.comment.find({content: /某某/})5. 比较查询通过“ ! 常用操作符”db.集合名称.find({ field : { $gt: value }}) //大于: field valuedb.集合名称.find({ field : { $lt: value }}) //小于: field valuedb.集合名称.find({ field : { $gte: value }}) //大于等于: field valuedb.集合名称.find({ field : { $lte: value }}) //小于等于: field valuedb.集合名称.find({ field : { $ne: value }}) //不等于: field ! value案例查询评论点赞数量大于700的记录db.comment.find({likenum:{$gt:NumberInt(700)}})6. 包含不包含查询$in$nin包含使用$in操作符。 示例查询评论的集合中userid字段包含1003或1004的文档db.comment.find({userid:{ $in:[1003,1004]}})不包含使用$nin操作符。 示例查询评论集合中userid字段不包含1003和1004的文档db.comment.find({userid:{$nin:[1003,1004]}})7. 条件连接查询与 ($and)和 或($or)语法格式与$and:[ { },{ },{ } ]示例查询评论集合中likenum大于等于700并且小于2000的文档db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})语法格式或$or:[ { },{ },{ } ]如果两个以上条件之间是或者的关系我们使用 操作符进行关联与前面and的使用方式相同 格式为$or:[ { },{ },{ } ]示例查询评论集合中userid为1003或者点赞数小于1000的文档记录db.comment.find({$or:[ {userid:1003} ,{likenum:{$lt:1000} }]})8. 查询所有存在或不存在 某个 字段的数据查询所有存在 name 字段的记录db.users.find({name: {$exists: true}});查询所有不存在 name 字段的记录db.users.find({name: {$exists: false}});六、数据库数据的导出、导入、备份、恢复1、导出。(mongoexport)注意只能导出数据库中的表每次只能导出一个表// 语法 mongoexport -h(或--host) IP地址 -u 用户名---(没有可省略) -p 密码---(没有可省略) -d 数据库名 -c 表名 --type 输出的格式或类型默认json---(只有两种格式json和csv) -f 导出的字段---(省略表示所有字段。如果--type为csv类型不能省略-f 字段名) -o 保存文件的目录可自定义指定文件后缀名 -q 指定查询语法相当于筛选输出---(可省略) // 1.普通导出----导出每个字段 mongoexport -h 127.0.0.1:27017 -d test -c user -o C:\Users\user.json // 2.导出指定的字段 mongoexport -h 127.0.0.1:27017 -d test -c user -f send_uin,recv_uin,appid -o C:\Users\user.json // 3.指定过滤条件,time字段大于100的-q 注意字段名需要用双引号括起来 mongoexport -h 127.0.0.1:27017 -d test -c user -q {time:{$gt:1637396640000000}} -o C:\Users\user.json // 4.指定pretty 输出 mongoexport -h 127.0.0.1:27017 -d test -c user --pretty -o C:\Users\user.json2、数据导入。(mongoimport)// 语法 mongoimport -h(或--host) IP地址 -u 用户名---(没有可省略) -p 密码---(没有可省略) -d 数据库名 -c 表名 --type 输出的格式或类型(可省略)默认json---(只有两种格式json和csv) -f 导出的字段---(省略表示所有字段。如果--type为csv类型不能省略-f 字段名) --headerline 如果导入的格式是csv则使用第一行的标题作为导入的字段 --file 要导入的文件 // 1.普通导入 mongoimport -h 127.0.0.1:27017 -d test -c user --typejson --fileC:\Users\user.json案例在本地把数据表文件导入宝塔数据库表中若不生效请查看宝塔权限// 宝塔---开启安全认证 mongoimport -h IP地址:27017 -u 用户名 -p 用户密码 -d 数据库名 -c 表名 --fileC:\Users\swj\Desktop\website\website\cache\article.json // 宝塔---未启安全认证 mongoimport -h IP地址:27017 -d 数据库名 -c 表名 --typejson --fileC:\Users\swj\Desktop\website\website\cache\article.json /** 【若把文件上传到宝塔在通过终端导入也是一样】以下案例 * 安全认证区别在于多填用户名或密码 */ mongoimport -h IP地址:27017 -u 用户名 -p 用户密码 -d 数据库名 -c 表名 --file/www/wwwroot/website/migrations/article.json3、数据备份。(mongodump)// 语法 mongodump -hMongDB所在服务器地址例如127.0.0.1当然也可以指定端口号127.0.0.1:27017 -d需要备份的数据库实例例如test -o备份的数据存放位置例如/home/mongodump/当然该目录需要提前建立这个目录里面存放该数据库实例的备份数据。 // 数据备份讲本地数据数据库test 的数据全部保存到 C:\Users目录下 mongodump -h 127.0.0.1:27017 -d test -o C:\Users4、数据恢复。(mongorestore)// 语法 mongorestore -hMongDB所在服务器地址 -d需要恢复的数据库实例。这个名称也可以和备份时候的不一样比如test2 --dir备份数据所在位置例如/home/ab/ --drop恢复前先删除当前数据在恢复备份的数据。慎用 // 数据恢复讲本地数据数据库test 的数据全部保存到 C:\Users目录下 mongorestore -h 127.0.0.1:27017 -d test --drop --dir C:\Users七、常用命令小结。选择切换数据库use articledb插入数据db.comment.insert({bson数据})查询所有数据db.comment.find();条件查询数据db.comment.find({条件})查询符合条件的第一条记录db.comment.findOne({条件})查询符合条件的前几条记录db.comment.find({条件}).limit(条数)查询符合条件的跳过的记录db.comment.find({条件}).skip(条数)修改数据db.comment.update({条件},{修改后的数据})或db.comment.update({条件},{$set:{要修改部分的字段:数据})修改数据并自增某字段值db.comment.update({条件},{$inc:{自增的字段:步进值}})删除数据db.comment.remove({条件})统计查询db.comment.count({条件})模糊查询db.comment.find({字段名:/正则表达式/})条件比较运算db.comment.find({字段名:{$gt:值}})包含查询db.comment.find({字段名:{$in:[值1值2]}})或db.comment.find({字段名:{$nin:[值1值2]}})条件连接查询db.comment.find({$and:[{条件1},{条件2}]})或db.comment.find({$or:[{条件1},{条件2}]})

相关新闻

LangChain生态工具选型指南:从开发到部署

LangChain生态工具选型指南:从开发到部署

1. 项目概述:LangChain生态工具选型指南在构建基于大语言模型(LLM)的应用程序时,开发者常常面临工具选择的困惑。LangChain生态系统中四个核心组件——LangChain、LangGraph、LangFlow和LangSmith——各自扮演着不同角色。本文将深入解析这四者的功能定位…

2026/10/15 13:30:35 阅读更多 →
在 Visual Studio Code 中配置 Clang-Format 格式化 (排版) 工具

在 Visual Studio Code 中配置 Clang-Format 格式化 (排版) 工具

在 Visual Studio Code 中配置 Clang-Format 格式化 {排版} 工具1. Install clang-format on Linux2. Create the .clang-format file3. Install the Clang-Format extension4. Configure ClangFormat options5. Code formatting6. 自定义 clang-format 代码格式规范References…

2026/10/17 1:42:23 阅读更多 →
C++与Easy-X实战:从零开发贪吃蛇游戏,掌握图形化编程与游戏逻辑

C++与Easy-X实战:从零开发贪吃蛇游戏,掌握图形化编程与游戏逻辑

1. 项目概述:为什么选择C与Easy-X来复刻贪吃蛇?如果你是一名C的初学者,或者已经学完了基础语法,正苦于找不到一个能串联起所有知识点的实战项目,那么“贪吃蛇”绝对是一个完美的起点。它逻辑清晰、体量适中&#xff0c…

2026/10/16 19:15:32 阅读更多 →

最新新闻

MySQL学生成绩管理系统数据库设计:需求分析、建表、视图与存储过程完整方案

MySQL学生成绩管理系统数据库设计:需求分析、建表、视图与存储过程完整方案

简介:这份资源是北邮研一数据库课程大作业的完整详解文档,面向正在修读数据库系统课程、需要完成课程设计的研究生及高年级本科生。内容围绕学生成绩管理系统展开,覆盖需求分析、数据库设计、ER图绘制、逻辑结构设计与建表程序等完整流程&…

2026/10/17 16:15:27 阅读更多 →
Unity运行时导入3D模型:基于TriLib源码的模型加载与替换实践

Unity运行时导入3D模型:基于TriLib源码的模型加载与替换实践

简介:这套基于 Unity3D C# 与 TriLib 插件实现的运行时 3D 模型导入加载源码工程,面向需要为游戏或应用添加实时模型替换、关卡/场景编辑器以及 AR/VR 可视化等功能的 Unity 开发者。压缩包共 879 个文件,约 26.37MB,以 C# 脚本、…

2026/10/17 16:15:27 阅读更多 →
数据库关系代数与SQL实战入门:从课本习题到可执行查询

数据库关系代数与SQL实战入门:从课本习题到可执行查询

简介:本资源是《数据库系统概论(第5版)》王珊、萨师煊主编教材的配套课后习题详细答案,面向高校计算机、软件工程、信息管理等专业本科生及数据库初学者,用于巩固关系模型、关系代数、SQL语言等核心理论知识&#xff0…

2026/10/17 16:15:27 阅读更多 →
Unity3D数字孪生案例:从模型导入到数据驱动的完整落地路径

Unity3D数字孪生案例:从模型导入到数据驱动的完整落地路径

简介:面向数字孪生初学者与全栈开发爱好者的一套 Unity3d(WebGL)小案例代码包,聚焦硬件终端、webGL、Web端与服务端之间的数据交互链路,帮助解决 Unity3d 建模在网页端运行及 IoT 数据回流三维场景的问题。压缩包共3个…

2026/10/17 16:15:27 阅读更多 →
WordPress故障排查实战:从白屏、数据库到迁移陷阱一次说清

WordPress故障排查实战:从白屏、数据库到迁移陷阱一次说清

说起WordPress问题,我这几年遇到最多的不是某个单一故障,而是一堆"莫名其妙"的现象:前台白屏、后台登录死循环、文章保存按钮转圈、图片传不上去、网站被搜索引擎收录了一堆垃圾页面、搬家之后样式全丢。很多朋友的第一反应是"…

2026/10/17 16:15:27 阅读更多 →
Vim+GCC+库文件:打通Linux开发工具链的完整闭环

Vim+GCC+库文件:打通Linux开发工具链的完整闭环

我见过太多刚切到 Linux 的开发者,第一周就被劝退。倒不是 C 语言难,而是卡在了工作流上:在终端里不知道怎么快速改代码,写完程序不知道怎么编译,编译完了遇到各种链接报错又一头雾水。说白了,就是 Vim 操作…

2026/10/17 16:14:27 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →