mongodb的简单操作

文章目录

  • 前言
  • 数据库的创建和删除
  • 集合的创建和删除
  • 文档的插入和查询
  • 异常处理
  • 更新数据
    • 局部修改
    • 符合条件的批量更新
    • 加操作
  • 删除文档
    • 删除全部数据
    • 删除符合条件的数据
  • 统计count
    • 统计有多少条数据
    • 统计特定条件有多少条数据
  • 分页查询
  • 排序查询
  • 正则查询
  • 比较查询
  • 包含查询
  • 条件连接查询
  • 索引
    • 查看索引
    • 创建索引
    • 删除索引


前言

我们这里使用的mongosh,mongodb shell。因为mongo7.0本体没有mongo命令了。

数据库的创建和删除

创建数据库

use 数据库名称

mongodb 如果没有这个数据库就会直接创建

删除数据库

db.dropDatabase()

显示全部的数据库

show databases
show dbs

在这里插入图片描述

集合的创建和删除

创建集合

db.createCollection(“集合的名称”)

集合的删除

db.集合的名称.drop()

显示全部的集合

show collections

在这里插入图片描述

文档的插入和查询

文档(document)的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。

单个插入内容

db.comment.insert({“articleid”:“100000”,“content”:“今天天气真好,阳光明媚”,“userid”:“1001”,“nickname”:“Rose”,“createdatetime”:new Date(),“likenum”:NumberInt(10),“state”:null})

请注意,我们这里使用了comment,这个是集合的名字,我们这样使用,如果没有这个集合,就会创建一个集合

批量插入,注意!!!,如果某条插入失败了,mongodb不会回滚!!!

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”} ]);

查询全部数据,如果没有数据就是空

db.comment.find()

条件查询,注意这里会返回全部的符合条件的数据

db.comment.find({articleid:“100001”})

条件查询+limit
只返回第一条数据

db.comment.findOne({article:“100001”})

查询部分显示

db.comment.find({articleid:“100001”},{articleid:1})
在这里插入图片描述

异常处理

try {

db.comment.insertMany([ {“_id”:“1”,“articleid”:“100001”,“content”:“我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我他。”,“userid”:“1002”,“nickname”:“相忘于江湖”,“createdatetime”:new Date(“2019-0805T22: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-0806T11:01:02.521Z”),“likenum”:NumberInt(3000),“state”:“1”}]);} catch (e) {print (e)}

更新数据

注意!!!我自己测试,mongodb7所有的更新操作必须要有院子操作符,也就是$set,$inc 这些东西,不然会报错

局部修改

db.comment.update({_id:“1”},{$set:{likenum:NumberInt(1001)}})

符合条件的批量更新

我们的凯撒有两条数据,我们想一起修改

db.comment.update({userid:“1003”},{$set:{nickname:“凯撒大帝”}},{multi:true})

加操作

db.comment.update({_id:“3”},{$inc:{likenum:NumberInt(1)}})

后面可以写你想加的数字

删除文档

注意!!!remove在未来会被弃用!!!
DeprecationWarning: Collection.remove() is deprecated. Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.

删除全部数据

db.comment.remove({})

删除符合条件的数据

db.comment.remove({_id:“1”})

统计count

注意!!!count在未来会被弃用!!!
DeprecationWarning: Collection.count() is deprecated. Use countDocuments or estimatedDocumentCount.

统计有多少条数据

db.comment.count()

统计特定条件有多少条数据

db.comment.count({userid:“1003”})

分页查询

分页查询就是MySQL里的limit和offset,
limit 就是只要几条数据,offset就是跳过几条数据
在mongodb里面limit还是limit,offset变成了skip。
这个作用就是用于把数据进行分页的

db.comment.find().skip(0).limit(2)
db.comment.find().skip(2).limit(2)
db.comment.find().skip(4).limit(2)

排序查询

对userid降序排列,并对访问量进行升序排列

db.comment.find().sort({userid:-1,likenum:1})

正则查询

mongodb也支持正则表达式的查询,格式为

db.集合.find({字段:/正则表达式/})

关于正则表达式,正则表达式我是觉得很反人类的,会用就行了,现在也有gpt了,也可以让gpt去写正则表达式

比较查询

比较查询就是大于,大于等于,小于,小于等于,不等于,等于,这些是比较常用的

db.集合名称.find({ “field” : { $gt: value }}) // 大于: field > value
db.集合名称.find({ “field” : { $lt: value }}) // 小于: field < value
db.集合名称.find({ “field” : { $gte: value }}) // 大于等于: field >= value
db.集合名称.find({ “field” : { $lte: value }}) // 小于等于: field <= value
db.集合名称.find({ “field” : { $ne: value }}) // 不等于: field != value
db.集合名称.find({ “field” : { $eq: value }}) // 等于: field == value

比如,查询评论点赞数量大于700的记录

这里想说明一下,我用的mongodb7版本写不写NumberInt都可以运行,前面也是这样的

db.comment.find({likenum:{$gt:NumberInt(700)}})

包含查询

包含查询就是使用in(在里面),nin(不在里面)

学过python的朋友应该很熟悉吧
查询评论的集合中userid字段包含1003或1004的文档

db.comment.find({userid:{$in:[“1003”,“1004”]}})

查询评论集合中userid字段不包含1003和1004的文档

db.comment.find({userid:{$nin:[“1003”,“1004”]}})

条件连接查询

这里就是使用and和or
格式为

$and:[ { },{ },{ } ]
$or:[ { },{ },{ } ]

查询评论集合中likenum大于等于700 并且小于2000的文档

db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})

查询评论集合中userid为1003,或者点赞数小于1000的文档记录

db.comment.find({$or:[ {userid:“1003”} ,{likenum:{$lt:1000} }]})

索引

索引简单来说,就是为了加速查询的,你们可以下载一个软件叫everything,它的查询速度就不是win能比的。

查看索引

db.comment.getIndexes()

创建索引

按照升序,将userid创建为索引

db.comment.createIndex({userid:1})

复合索引,对userid和nickname同时建立复合索引

db.comment.createIndex({userid:1,nickname:-1})

删除索引

db.comment.dropIndex({userid:1})

db.comment.dropIndex(“userid_1_nickname_-1”)

删除所有的索引,注意!!!默认的索引是不会删除的

db.comment.dropIndexes()

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

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

相关文章

【文件操作API的使用】

1.概念 这对聪明的你们来说简直就是&#xff0c;对吗。 那什么是文件操作符&#xff0c;文件操作又有哪些步骤呢&#xff1f; 文件操作符通常用于指代在计算机编程中用于处理文件的特殊符号或标识符。在很多编程语言中&#xff0c;文件操作符被用于打开、关闭、读取和写入文件…

香港科技大学广州|数据科学与分析学域硕博招生宣讲会—天津大学专场

时间&#xff1a;2024年4月12日&#xff08;星期五&#xff09;14:00 地点&#xff1a;天津大学北洋园校区55楼B204 报名链接&#xff1a;https://www.wjx.top/vm/Q0cKTUI.aspx# 跨学科研究领域 *数据驱动的人工智能和机器学习 *统计学习和建模 工业和商业分析 *特定行业的数…

两阶段提交-mysql

二阶段提交的 prepare 阶段&#xff0c;InnoDB 主要做五件事。 第 1 件&#xff0c;把分配给事务的所有 undo 段的状态从 TRX_UNDO_ACTIVE 修改为 TRX_UNDO_PREPARED。 进入二阶段提交的事务&#xff0c;都至少改变过&#xff08;插入、更新、删除&#xff09;一个用户表的一…

工艺品wordpress外贸主题

工艺品wordpress外贸主题 简约大气的wordpress外贸主题&#xff0c;适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377

社交媒体市场:揭示Facebook的商业模式

在数字化时代&#xff0c;社交媒体已经成为人们生活中不可或缺的一部分。Facebook作为全球最大的社交媒体平台之一&#xff0c;其商业模式的运作方式对于了解社交媒体市场的发展趋势和影响力至关重要。本文将深入探讨Facebook的商业模式&#xff0c;剖析其运作机制&#xff0c;…

【Java面试题系列】基础篇

目录 基本常识标识符的命名规则八种基本数据类型的大小&#xff0c;以及他们的封装类3*0.10.3返回值是什么short s1 1; s1 s1 1;有什么错? short s1 1; s1 1;有什么错?简述&&与&的区别&#xff1f;简述break与continue、return的区别&#xff1f;Arrays类的…

微服务(基础篇-007-RabbitMQ部署指南)

目录 05-RabbitMQ快速入门--介绍和安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p65&vd_source60a35a11f813c6dff0b76089e5e138cc 1.单机部署 1.1.下载镜像 1.2.安装MQ 2.集群部署 2.1.集群分类 2.2.设置网络 视频地址&#xff1a; 05-Rab…

项目:USB键盘和鼠标的复合设备

我们的复合设备使用一个物理设备就可以完成多个功能。 使用复合设备同时完成USB键盘和鼠标功能&#xff0c;它的主要实现方式有两种&#xff0c; 第一个就是我们将多个设备描述符合并成一个&#xff0c;这个相对比较简单&#xff0c;我们只要根据相应的报告描述符处理数据就可…

vue3的ref和reactive对比

一&#xff0c;ref 作用: 定义一个 ref 响应式的数据语法: const xxx ref(initValue) 用法 创建一个包含响应式数据的引用对象&#xff08;reference对象&#xff0c;简称ref对象&#xff09;。 JS中操作数据&#xff1a; xxx.value 模板中读取数据: 不需要.value&#xff0…

Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题

关键计算地方: 1.当前是上滑动还是下滑动(相对于屏幕) ,使用ev.getRawY()获得当前滑动位置在屏幕哪个地方 2. 计算文本客滑动到哪里即可停止, (行高*总文本行数)- (行高 * 最多显示行数) int sum getLineHeight() * getLineCount() - getLineHeight() * getMaxLines(); …

Red Hat配置本地yum源

Red Hat配置本地yum源 创建本地源文件夹 mkdir -p /mnt/cdrom挂载镜像文件至指定的目录 mount /dev/cdrom /mnt/cdrom备份本地源 cp -rf /etc/yum.repos.d /etc/yum.repos.d_$(date %Y%m%d_%H%M%S)删除默认原本地源 rm -rf /etc/yum.repos.d/*配置本地源&#xff0c;创建…

分享一个Python爬虫入门实例(有源码,学习使用)

一、爬虫基础知识 Python爬虫是一种使用Python编程语言实现的自动化获取网页数据的技术。它广泛应用于数据采集、数据分析、网络监测等领域。以下是对Python爬虫的详细介绍: 架构和组成:下载器:负责根据指定的URL下载网页内容,常用的库有Requests和urllib。解析器:用于解…

一文涵盖所有工作中遇到的redis操作,让你从此学会redis

一文涵盖所有工作中遇到的redis操作&#xff0c;让你从此学会redis 本文会从基础篇到进阶篇&#xff0c;逐步来讲解redis和springboot的整合&#xff0c;如何去操作&#xff0c;以及他的作用。让你学会使用redis&#xff0c;爱上使用redis。 介绍redis 首先我们来介绍一下re…

如何在Linux系统运行RStudio Server并实现无公网IP远程访问【内网穿透】

文章目录 推荐 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

c++的学习之路:7、类和对象(3)

一、初始化列表 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始值或表达式&#xff0c;如下方代码就是初始化列表的方式。从图片可以看出这种方式也可以利用缺省初始化…

vue项目双击from表单限制重复提交 添加全局注册自定义函数

第一步: 找到utils文件夹添加directive.js文件 import Vue from vue //全局防抖函数 // 在vue上挂载一个指量 preventReClick const preventReClick Vue.directive(preventReClick, {inserted: function (el, binding) {console.log(el.disabled)el.addEventListener(click,…

rs485自动收发电路

R/RO&#xff1a;receive/receive out&#xff0c;接收&#xff0c;连接单片机的 rx D/DI&#xff1a;drive/drive in&#xff0c;驱动&#xff0c;连接单片机的 tx 自动控制电路的目的就是在 tx 空闲&#xff08;空闲为高并&#xff09;时拉低 RE 和 DE&#xff0c;工作&…

【Python】【Flask】提交表单后报500错误

【背景】 日常用户使用的一个Online的基于Flask做的工具,今天忽然报错,看现象是点击表单提交按钮后发生错误。报500内部错误。 【分析】 用print步步为营接近root cause。 报错对应视图函数的展示部分正常执行。提交表单按钮后的内容全部没有正常执行。 提交表单用的方法是…

设计模式(15):迭代器模式

介绍 提供一中可以遍历聚合对象的方式。又称为: 游标cursor模式 迭代器模式角色 抽象聚合类(Aggregate)&#xff1a;提供了聚合相关的方法,并提供获取迭代器的方法&#xff1b;具体集合类(ConcreteAggregate):实现了抽象聚合类&#xff1b;抽象迭代器(Iterator)&#xff1a;…

紫光展锐P7885核心板详细参数介绍_5G安卓智能模块开发方案

紫光展锐P7885核心板采用了先进的6nm EUV制程工艺&#xff0c;集成了高性能的应用处理器和金融级安全解决方案&#xff0c;为用户带来了全新的性能体验。 P7885核心板搭载了先进的6nm制程工艺SoC P7885&#xff0c;其中包含四核A76和四核A55&#xff0c;主频可达2.7Ghz&#xf…