mongodb的简单操作

news2024/11/26 0:26:04

文章目录

  • 前言
  • 数据库的创建和删除
  • 集合的创建和删除
  • 文档的插入和查询
  • 异常处理
  • 更新数据
    • 局部修改
    • 符合条件的批量更新
    • 加操作
  • 删除文档
    • 删除全部数据
    • 删除符合条件的数据
  • 统计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.coloradmin.cn/o/1565527.html

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

相关文章

Python疑难杂症(16)---Numpy知识集合(四)列出Numpy模块的常用函数,供查询参考。

列出Numpy模块的常用函数&#xff0c;供查询参考。 numpy.array:创建新的NumPy数组 numpy.zeros:创建一个以零填充的数组。 numpy.random:生成随机数组的函数。 numpy.linspace:在指定范围内生成均匀间隔的数字。 numpy.range:用间隔的值创建数组。 numpy.shape:返回一个…

AWS-EKS 给其他IAM赋予集群管理权限

AWS EKS 设计了权限管理系统&#xff0c;A用户创建的集群 B用户是看不到并且不能管理和使用kubectl的&#xff0c;所以我们需要共同管理集群时就需要操场共享集群访问给其他IAM用户。 两种方式添加集群控制权限&#xff08;前提&#xff1a;使用有管理权限的用户操作&#xff…

睡岗检测识别系统

智驱力睡岗检测识别系统是一种基于人工智能技术的监控系统&#xff0c;旨在通过视频分析来识别和报警那些在工作岗位上出现睡觉行为的人员。这种系统通常应用于需要24小时监控的关键岗位&#xff0c;如银行、营业厅、监控中心等场所。系统能够自动分析监控画面&#xff0c;当检…

如何在比特币上验证ZK Proofs

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f;BitVM2&#xff1a;比特币上的无需许可验证以比特币脚本来实现SNARK VerifierClementine&#xff1a;Citrea的基于BitVM的…

鸿蒙HarmonyOS应用开发之NativeBundle开发指导

场景介绍 开发者可以通过本指导了解在OpenHarmony应用中&#xff0c;如何使用Native Bundle接口获取应用自身相关信息。 接口说明 开发步骤 1. 创建工程 2. 添加依赖 创建完成后&#xff0c;IDE会在工程生成cpp目录&#xff0c;目录有libentry/index.d.ts、hello.cpp、CMak…

XenCenter 2024 导入虚拟机

导入虚拟机 虚拟机位置 导入到那一个服务器 导入虚拟机存放存储位置 虚拟机网卡配置 SR修复功能&#xff0c;看自己需求 虚拟机恢复确认最终配置 恢复好的虚拟机 虚拟机模板转换

上位机图像处理和嵌入式模块部署(qmacvisual图像清晰度)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 做过isp的同学都知道&#xff0c;图像处理里面有一个3A&#xff0c;即自动曝光、自动白平衡和自动对焦。其中自动对焦这个&#xff0c;就需要用输入…

HbnnMall电子商城系统介绍(功能与技术栈)

今天在看自己网站上的文章时&#xff0c;看到了曾经开发的电商系统。那是在2020年&#xff0c;来到小米两年后&#xff0c;我已经对各个业务线&#xff0c;各种专业知识有了系统性的了解和学习&#xff0c;所以想自己动手写一个电商系统&#xff0c;以便进一步提高自己的技术。…

【数论】莫比乌斯反演(欧拉反演)进阶-杜教筛

文章目录 前言 回忆 题集12 杜教筛例题 前言 这里需要对莫反有一些基础。 不会的可以点这里 回忆 f ( n ) ∑ d ∣ n g ( d ) → g ( n ) ∑ d ∣ n f ( d ) μ ( n d ) f(n)\sum_{d|n}g(d)\rightarrow g(n)\sum_{d|n}f(d)\mu(\frac{n}{d}) f(n)∑d∣n​g(d)→g(n)∑d∣n​…

vue3+eachrts饼图轮流切换显示高亮数据

<template><div class"charts-box"><div class"charts-instance" ref"chartRef"></div>// 自定义legend 样式<div class"charts-note"><span v-for"(items, index) in data.dataList" cla…

unity之 “Allow ‘unsafe‘ code“ 在哪里。

导入unity中的代码&#xff0c;出现如下错误&#xff0c;该如何解决&#xff1f; Unsafe code may only appear if compiling with /unsafe. Enable "Allow unsafe code" in Player Settings to fix this error 解决这个问题&#xff0c;只需要设置就可以。 设置的地…

【苍穹外卖】log爆红

使用了Slf4j注解&#xff0c;用于自动生成一个log对象&#xff0c;相当于private final Logger log LoggerFactory.getLogger(当前类名.class); 这个注解需要安装Lombok插件才能使用。 IDEA file—settings–plugins&#xff0c;搜索lombok–install。安装完后自动重启IDEA后…

【WEEK6】 【DAY2】DQL Data Querying - Part Two 【English Version】

2024.4.2 Tuesday Following the previous article 【WEEK6】 【DAY1】DQL Data Query - Part One【English Version】 Contents 4.4. Join Queries4.4.1. JOIN Comparison4.4.2. Seven Types of JOINs4.4.3. Examples4.4.3.1. In this example, the results of INNER JOIN and…

DLL导出API注意事项

文章目录 问题原则示例一解决方案 示例二解决方法 参考 问题 在 windows 平台下&#xff0c;如果在动态库的接口中使用 std::string 或其它 std 容器&#xff0c;会导致崩溃或其它内存问题&#xff0c;所以一般要求动态库的接口必须是 C 语言实现。 原则 一个原则&#xff1a;…

LabVIEW专栏二、调用子VI

该节目标是创建带子vi&#xff0c;修改vi属性&#xff0c;测试可重入和不可重入的区别 一 、设置子VI 把VI封装成为子VI&#xff0c;可以帮助模块化程序&#xff0c;简化代码结构。 任何VI本身都可以成为别的VI的子VI。 1.1、设置输入输出端子 1、在前面板空白处&#xff0…

JavaScript中什么叫深拷贝?

在 JavaScript 中&#xff0c;深拷贝指的是创建一个新的对象&#xff0c;这个新的对象与原始对象完全独立&#xff0c;没有任何共享的属性或者数据&#xff0c;它们不共享同一块内存地址。深拷贝会复制原始对象的所有属性和嵌套对象的所有属性&#xff0c;包括嵌套对象中的属性…

Mybatis——查询数据

查询操作 根据用户id查询单条记录&#xff0c;在映射器接口(UserMapper)中定义如下方法&#xff1a; package org.example.mapper;import org.example.demo.User;import java.util.List;public interface UserMapper {//根据id查询UserUser selectUserById(Integer userId); …

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网&#xff08;IoT&#xff09;背景下&#xff0c;处理实时数据会遇到一些特定的障碍&#xff0c;如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战&#xff0c;需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…

【升降自如】OLED升降透明屏,智能调节,打造个性化观影体验

OLED升降透明屏&#xff0c;作为科技领域的创新之作&#xff0c;以其升降自如、智能调节的特点&#xff0c;为用户带来了前所未有的个性化观影体验。 这款透明屏采用先进的OLED显示技术&#xff0c;不仅色彩鲜艳、对比度高&#xff0c;而且具备出色的透明性能。更值得一提的是&…

3D人脸扫描技术与数字人深度定制服务:赋能打造超写实3D数字分身

在数字时代&#xff0c;3D数字分身有着广泛的应用场景&#xff0c;在动画视频、广告宣传片、大型活动主持人、AI交互数字人等领域&#xff0c;发挥着重要的商业价值。其中&#xff0c;3D人脸扫描技术&#xff0c;推动了超写实3D数字分身的诞生。 公司案例 2023海心沙元宇宙音乐…