MongoDB:基础语句及练习
一 基本命令
1.显示所有数据库
show dbs show databases
2.进入某个数据库
use 数据库名称
3.显示当前数据库信息
db.stats()
4.显示当前数据库的所有集合
show collections
5.显示当前数据库
db
在 MongoDB 里,数据库和集合都不用手动创建: 当使用“use 数据库名称”命令时,如果数据库不存在,会自动创建数据库 当使用“db..insert()”命令插入文档时,如果集合不存在,会自动创建集合 (也可以用命令创建集合,格式为 db.createCollection("集合名称"))
6.集合的删除
db..drop()
7.删除当前数据库
db.dropDatabase()
二 CRUD(增删改查)操作
1.插入文档
db..insert(document)
- 插入一个或多个文档(文档要用大括号括起来,如果要插入多个文档,要使用数组用[]括起来)
db.s.insert({sno:"1001",sname:"张三"})db.s.insert([{sno:"1002",sname:"李四"},{sno:"1003",sname:"王五",ssex:"男"}])
注:当向集合中插入文档时,如果没有给文档指定_id 属性,则数据库会自动为文档添 加_id,该属性用来作为文档的唯一标识。也可以自己指定_id 列的值,但必须确保它的唯一性。
db.s.insert({_id:"hello",sno:"1004",sname:"王大力"}))
db.insertOne(document) --插入一个文档
例:db.s.insertOne({sno:"1005",sname:"李浩 "})
db..insertMany(document array) --插入多个文档
例:db.s.insertMany([{sno:"1006",sname:"李四四"},{sno:"1007",sname:"王五五",ssex:" 男"}]
2.查询
db.find()
- 不写或者{}空文档:查询集合中所有的文档
- 可以接收一个对象作为条件参数
- {属性:值} 查询属性值是指定值的文档 例:db.s.find({sno:"1002"})
3.多条件查询
- 与的关系
db.s.find({sname:"zhangsan",sage:20})
db.s.find({$and:[{sage:{$gte:18}},{sage:{$lte:20}}]})
- 或的关系
db.s.find({$or:[{sname:"zhangsan"},{sage:18}]})
- $in 运算符
db.stu.find({sname:{$in:["zhangsan","John"]}})
- find()返回的是一个数组
db.s.find({sage:11})[0] --返回满足条件的第一个文档
4.特殊查询
db.find().count() --统计查询结果的数量
db.findOne() --查询满足条件的第一个文档
db. find({sage:null}) --查找 null 值字段
-文档查询结果以树形结构显示
db.find().pretty()
--如果查询结果只显示部分文档内容,可以设置第二个参数,将需要显示的字段对应值设 置为 1
例:db.s5.find({},{sno:1,sname:1}) --只显示 sno 和 sname 两个字段
--如果只在结果中显示具体的内容字段,不包含_id 字段,可以在第二个参数把_id 对应值 设为 0
例:db.s5.find({},{_id:0})
5.修改
db.collection.update(查询条件,新对象,{ upsert:, multi:})
- upsert:如果不存在查询条件查出的记录,是否插入一条数据,默认是 false
- multi:是否只修改查询条件查出的第一条记录,默认是 false
update()默认情况会使用新对象替换旧对象
db.s.update({sname:"zhangsan"},{sage:20}) --文档只剩下 sage 属性
如果需要修改指定的属性,而不是替换,需要使用修改操作符完成:
$set 可以修改文档中的指定属性(可以修改或添加属性)
db.s.update({sname:"lisi"},{$set:{sage:20}}) db.s.update({sno:"1001"},{$set:{sage:44,addr:"hebei"}})
$unset 用来删除文档指定的属性
db.s.update({sname:"wangwu"},{$unset:{sage:9}})
update()默认修改符合条件的第一个文档,默认和 updateOne 功能相同。如果要修改所有 文档,需要设置第 multi 参数
db.s.update({sname:"lisi"},{$set:{sage:10}},{multi:true}) upsert
列改名
db.s.update({},{$rename:{"address":"addr"}},{multi:true})
$inc 与$mul
-- 所有人的年龄加 1db.s.update({},{$inc:{sage:1}},{multi:true})-- 所有人的年龄乘 2
db.s.update({},{$mul:{sage:2}},{multi:true})
6.删除
db.collection.remove()
remove()删除满足条件的文档,条件的传递方式和 find()一样,默认删除的是所有符合条件的文档
db.s.remove({sname:"lisi"})
如果想删除满足条件的第一个文档,需要设置第二个参数:
db.s.remove({sage:20},true)
如果要删除集合中所有的文档,传递的参数要为一个空对象{},而且不能省略 :
db.s.remove({})
三 补充
复制集合 s,新生成集合为 s2
b.s.find({}).forEach(function(x){db.s2.insert(x)}) --复制集合 s,新生成的集合为 s2
--导入导出 json 文件 mongoe
xport -d test -c s -o d:\s.json--导出 test 数据库的集合 s 中的数据到 s.json 文件mongoimport -d test -c s d:\s.json --把 s.json 文件中的数据库导入到 test 数据库的 s5 集合中(参数说明:-d 指明使用的库 -c 指明要导出的表 -o 指明要导出的文件名及路径)
--导入导出 csv 文件
mongoexport -d test -c s -o d:\s.csv --type csv -f sno,sname,ssex,sagemongoimport -d test -c s3 --type csv --file d:\s.csv –headerline
相关文章:
MongoDB:基础语句及练习
一 基本命令 1.显示所有数据库 show dbs show databases 2.进入某个数据库 use 数据库名称 3.显示当前数据库信息 db.stats() 4.显示当前数据库的所有集合 show collections 5.显示当前数据库 db 在 MongoDB 里,数据库和集合都不用手动创建: 当使用“us…...
百度智能云创新业务部总经理李想:发挥AI企业科技创新优势 助力职业教育人才扬帆远航
前言:百度智能云教育行业解决方案作为百度智能云旗下的创新力量,专注于培养“AI教育”领域的新质生产力人才,一直以来备受职业教育领域的关注。在第六届人工智能“职教百强”院校长论坛开幕之际,中教全媒体对话论坛嘉宾百度智能云…...
了解股票沽空及其风险
什么是股票沽空? 股票沽空是一种投资策略,投资者通过借入股票并在市场上卖出,期望在未来以更低的价格买回股票,以赚取价差收益。这一策略在市场下跌时尤为常见,因为投资者可以从股票价格的下跌中获利。 股票沽空的…...
【Sql Server修改列类型错误信息:对象名依赖于列】
Sql Server修改列类型错误信息:对象名依赖于列 报错信息解决方法测试sql语句 报错信息 修改表中列类型,发生报错如下: [SQL Server]对象DF__Forecast___isCal__4E746892 依赖于 列isCalcFinished。 (5074) [42000] [Microsoft][ODBC Driver…...
【ACM珠海分会,IEEE Fellow加盟,CPS出版】第四届管理科学和软件工程国际学术会议(ICMSSE 2024,7月19-21)
第四届管理科学和软件工程国际学术会议(ICMSSE 2024)由ACM珠海分会,广州番禺职业技术学院主办;全国区块链行业产教融合共同体,AEIC学术交流中心承办,将于2024年7月19-21日于广州召开。 会议旨在为从事管理与软件工程领域的专家学…...
kmeans.fit_predict 和 kmeans.fit有什么区别
KMeans 是 scikit-learn 库中用于执行 K-means 聚类算法的类。fit_predict 和 fit 是该类中的两个方法,的主要区别在于返回的内容和用途。 kmeans.fit: 用途: 用于训练 K-means 模型。输入: 接受一个特征矩阵(通常是二维数组)作为输入。输出:…...
香港优才计划续签难吗?一次性说清楚优才续签要求,不在香港居住也能续签成功!
香港优才计划续签难吗?这个问题对考虑申请优才的人来说,还是挺重要的。我们申请优才,最关注的2个问题,一个是获批,还有一个就是续签了。 毕竟我们费那么大功夫申请优才,可不只是为了一个为期3年的香港临时…...
react获取访问过的路由历史记录
看了下,好像没有很好的解决方案,之前的useHistory现在也用不了了, chatgpt说使用useMatch,也报错 看了下浏览器原生的。本来浏览器就会限制这个histroy的读取,只能获取length https://developer.mozilla.org/zh-CN/…...
基于深度学习的点云降噪
基于深度学习的点云降噪是一种利用深度学习模型处理三维点云数据,以去除噪声并恢复点云的原始形状和细节的方法。点云数据广泛应用于自动驾驶、机器人导航、3D扫描和虚拟现实(VR)等领域,因此高质量的点云数据处理至关重要。以下是…...
数据结构-二叉搜索树与红黑树
4.二叉搜索树 又叫二叉查找树、有序二叉树、排序二叉树。树中任意一个结点,其左子树的每个节点值都要小于该节点,其右子树的每个节点值都要大于该节点 作用:能够进行快速查找、插入、删除操作 4.1 二叉搜索树的时间复杂度 注:二…...
52771-009P 同轴连接器
型号简介 52771-009P是Southwest Microwave的连接器。这款连接器外导体外壳、耦合螺母和电缆夹紧螺母都采用了不锈钢 UNS-S30300 材料。不锈钢具有优异的耐腐蚀性和机械强度,能够保证连接器在各种恶劣环境下都能稳定工作。 型号特点 中心触点、外壳、衬套固定环&am…...
鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】
线性容器Vector 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Vect…...
使用Python绘制堆积面积图
使用Python绘制堆积面积图 堆积面积图效果代码 堆积面积图 堆积面积图是面积图的一种扩展,通过堆积多个区域展示不同类别数据的累积变化。常用于显示不同部分对整体的贡献。 效果 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQbW4F…...
代码还原动态调试之 pstree 乘法变加法
乘法编译后,生成加法汇编,提升CPU执行效率; 406a: 85 ff test %edi,%edi // x ? 0406c: 0f 84 7e 00 00 00 je 40f0 <__sprintf_chkplt0x1980>*/int digits, div;if (x ! 0) {/*4072: 89 fd …...
C++:获取当前可执行核心数(开辟线程)
sysconf(_SC_NPROCESSORS_ONLN) 是一个在 POSIX 兼容系统上广泛使用的函数,它用于获取当前系统上可用的处理器(CPU 核心)的数量。这个函数是 sysconf 函数的一个特定调用,其中 _SC_NPROCESSORS_ONLN 是一个常量,指定了…...
【简历】吉林某985大学:JAVA实习简历指导,面试通过率相当低
注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这份简历是一个顶级985吉林大学的同学投Java职位的简历。因为学校是顶级985,所以他的大厂简历通过率是比较高的,…...
C#中的MD5摘要算法与哈希算法
文章目录 一、哈希算法基础二、MD5 算法原理三、MD5摘要算法四、哈希算法五、C#实现示例MD5算法示例哈希算法示例字符串MD5值对比 六、总结 一、哈希算法基础 哈希算法是一种单向密码体制,它将任意长度的数据转换成固定长度的字符串。这种转换是不可逆的࿰…...
使用 python 构建企业级高可用海量爬虫调度系统
一、引言 在大数据时代,信息的获取与分析成为了企业决策的重要依据。对于营销行业而言,实时抓取和分析竞争对手动态、市场趋势以及用户反馈等数据,是制定有效策略的关键。然而,构建一个高可用的、能够处理海量数据的爬虫调度系统…...
IDEA常用技巧荟萃:精通开发利器的艺术
1 概述 在现代软件开发的快节奏环境中,掌握一款高效且功能全面的集成开发环境(IDE)是提升个人和团队生产力的关键。IntelliJ IDEA,作为Java开发者的首选工具之一,不仅提供了丰富的编码辅助功能,还拥有高度…...
GD32F303之CAN通信
1、CAN时钟 GD32F303主时钟频率最大是120Mhz,然后APB1时钟最大是60Mhz,APB2时钟最大是120Mhz,CAN挂载在APB1总线上面 所以一般CAN的时钟频率是60Mhz,这个频率和后面配置波特率有关 2、GD32F303时钟配置 首先我们知道芯片有几个时钟 HXTAL:高速外部时钟࿱…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
