MongoDB的使用

news2024/11/22 19:22:34

MongoDB 是一个跨平台的,以 JSON 为数据模型的文档数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。

1、 MongoDB 与 MySQL 数据库

  •  数据库操作
--创建数据库
use db1
--查看数据库
show dbs
--删除数据库
db.dropDatabase()
  •  集合操作
--创建集合
db.createCollection("users")
--查看集合
show collections
--删除集合
db.users.drop()

2、mongoDB数据操作

2.1、文档的插入操作

注意:在 MongoDB 中不需要提前创建集合就可以直接插入文档,在插入文档的同时自动创建集合

  • 插入文档
db.fruits.insert(
    [
        { "name": "apple", "price": 10, "color": ["red", "green"], },
        { "name": "banana", "price": 8, "color": ["yellow", "green"], },
        { "name": "mongo", "price": 12, "color": ["yellow", "green"], },
    ]
)
  • 插入一条文档
db.users.insertOne(
    {
        "username": "zhangsan",
        "password": "88888888",
        "form": { "country": "China", "city": "Beijing" }
    }
)
  • 插入多条文档
db.users.insertMany(
    [
        {
            "username": "lisi",
            "password": "4444",
            "form": { "country": "China", "city": "Shanghai" }
        },
        {
            "username": "wanger",
            "password": "666666",
            "form": { "country": "China", "city": "Shenzhen" }
        },
    ]
)

2.2、文档的查询操作

  • 单条件查询文档
db.users.find(
    { "username": "zhangsan" }
)
  • 多条件 and 查询文档
db.users.find(
    { "username": "zhangsan", "password": "88888888" }
)
  • 多条件 and 查询文档的另一种形式
db.users.find(
    {
        $and: [
            { "username": "zhangsan" },
            { "password": "88888888" }
        ]
    }
)
  • 多条件 or 查询文档
db.users.find(
    {
        $or: [
            { "username": "zhangsan" },
            { "password": "88888888" }
        ]
    }
)
  • 正则表达式查询文档
db.users.find(
    { username: /^zhang/ }
)
  • 查询条件对比表 

  • 查询逻辑对照表 

  • 查询子文档
db.users.find(
    { "form.country": "China" }
)
  • 控制查询返回的字段
db.fruits.find(
    { "name": "apple" }, { "_id": 0, "name": 1, "color": 1 }
)

注意:其中 _id name color 的 0 表示不返回字段,其中的 1 表示返回字段

2.3、文档的更新操作 

  • 更新一条文档
db.fruits.updateOne(
    { "name": "banana" }, { $set: { "price": 20 } }
)

注意:updateOne 不管查询到多少条文档都只更新第一条文档

  • 更新多条文档
db.fruits.updateMany(
    { "name": "banana" }, { $set: { "price": 20 } }
)

注意:updateMany 查询到多少条文档就更新多少条文档

  • 更新数组操作符

2.4、文档的删除操作

  • 删除 price = 10 的文档

db.fruits.remove(
    { "price": 10 }
)
  • 删除 price < 12 的文档
db.fruits.remove(
    { "price": { $lt: 12 } }
)
  • 删除所有文档
db.fruits.remove({})

3、聚合查询 

在 MongoDB 中聚合查询 aggregate 是以管道的形式进行处理数据并主要用于处理数据统计、平均值、求和等

  • 聚合查询
db.fruits.aggregate(
    [
        { $group: { _id: "$name", total: { $sum: 1 } } },
        { $project: { name: "$name", total: "$total" } },
    ]
)

注意:这里对 fruits 集合进行聚合查询,先按 name 字段进行分组并合计分组的数量,然后在返回 name 字段和分组后的 total 字段进行显示 

  • 常用聚合查询对照表

4、索引 

db.fruits.createIndex(
    { name: 1 },
    { background: true },
)

注意:创建索引最好的方法是使用 ESR 原则,精确( Equal )匹配的字段放在最前面,排序( Sort )条件放中间,范围( Range )匹配的字段放最后 

5、备份与恢复

  • 备份 db1 数据库中的 users 集合
mongodump -h 127.0.0.1:27017 -d db1 -c users

注意:备份时不指定路径,默认备份在 /dump 目录中,如果数据库有权限请加上 -u username -p password--authenticationDatabase admin 参数执行命令

  • 恢复 db1 数据库中的 users 集合
mongorestore -h 127.0.0.1:27017 -u username -p password -d db1 -c users /dump/db1/users.bson --authenticationDatabase admin

注意:恢复时指定路径在 /dump 目录中的具体文件,如果数据库有权限请加上 -u username -p password--authenticationDatabase admin 参数执行命令

 

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

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

相关文章

openGauss 高效数据压缩算法

openGauss 高效数据压缩算法 2.1 主要创新技术点 openGauss 的主要创新技术点总结如下&#xff1a; &#xff08;一&#xff09;改进压缩算法&#xff0c;压缩数据单位依然是选择页级别&#xff0c;进一步结合 Page 结构以及本身数据的特征&#xff0c;将 page 交给通用压缩算…

使用ClickHouse JDBC官方驱动,踩坑无数

前言 最近遇到一个ClickHouse的线上问题&#xff1a; Code: 242, e.displayText() DB::Exception: Table is in readonly mode(zookeeper path:/clickhouse/tables/02/xxx) (version 21.12.4.1) (official build) 这个问题我在网上查原因说是由于Zookeeper压力过大&#xf…

MySQL基础篇之多表查询(内连接、外连接、自连接、子查询、union)

05、多表查询 5.1、多表关系 1、概述 项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系&#xff0c;基本上分…

maven学完总结!少走弯路一百遍

一、学习方式 学完maven大概花了两天的时间&#xff0c;其实之前学javaweb时用的是maven&#xff0c;因此有点接触&#xff0c;一到两天便能学完maven。 这次我也做了每个知识点的流程图。 但是我学完之后我发现可能没什么要做流程图的&#xff0c;因为更多的是自己动手操作的…

澳大利亚昆士兰大学博士后职位—生物活性肽

【国外博士后招聘-知识人网】澳大利亚昆士兰大学博士后职位—生物活性肽 昆士兰大学&#xff08;The University of Queensland&#xff09;&#xff0c;简称“昆大”“UQ” &#xff0c;世界高等科研学府。始建于1910年&#xff0c;是昆士兰州第一所综合型大学&#xff0c;同时…

网页JS自动化脚本(二)查找定位页面元素的方法

我们写脚本往往是要提取某些关键字,那么我们对于元素的查找和定位就很重要首先我们打开浏览器,鼠标右键点击我们想要定位的元素,然后点击审查元素 然后浏览器会弹出调试工具台,我们继续看下图右侧的调试工具台 可以看到我画了9个序号,可以看到从第1个到第7个全部是div容器元素,…

[附源码]Python计算机毕业设计Django+Vue的健身房会员系统的设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数字信号处理-11-FPGA FFT IP应用实例

前言 本文根据FFT相关原理进行设计构建工程&#xff0c;仿造前文的工程构建的混频功能的工程&#xff0c;设计工程显示该混频信号的功率谱&#xff0c;然后进行仿真分析。 FFT仿真与分析 本文不再针对FFT的原理进行过多赘述&#xff0c;提供一份简单的matlab仿真代码。根据仿…

在Soliworks中便捷添加自己的LOGO

在Soliworks中&#xff0c;一般采用草图图片样条曲线的方式绘制个人logo&#xff0c;但是对于一些复杂的logo&#xff0c;对每个模型都绘制一遍显然是不显示的&#xff0c;所以我摸索了一套只需绘制LOGO一遍&#xff0c;就能够将其应用在其他模型的方式。 1. 绘制LOGO 采用草…

黑马点评--好友关注

好友关注&#xff1a; 关注和取关 在探店图文的详情页面中&#xff0c;可以关注发布笔记的作者&#xff1a; 需求&#xff1a;基于该数据结构&#xff0c;实现两个接口 关注和取关接口 Overridepublic Result follow(Long id, Boolean isFollow) {// 1.获取登录用户Long us…

软件设计师教程(二)计算机系统知识-计算机体系结构

软件设计师教程 软件设计师教程&#xff08;一&#xff09;计算机系统知识-计算机系统基础知识 计算机体系结构软件设计师教程计算机体系结构的发展计算机系统结构概述计算机体系结构分类指令系统指令集体系结构的分类CISC和RISC指令的流水处理阵列处理机、并行处理机和多处理…

wy的leetcode刷题记录_Day51

wy的leetcode刷题记录_Day51 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2022-11-24 前言 目录wy的leetcode刷题记录_Day51声明前言795. 区间子数组个数题目介绍思路代码收获98. 验证二叉搜索树题目介绍思路代码收获795. 区间子数组…

Linux中修改环境变量的几种方法比较分析

修改环境变量的作用 使得命令可以在命令行直接运行 第一种方式&#xff0c;在终端直接使用export **特点&#xff1a;**即可生效&#xff0c;无需重启或刷新文件&#xff1b;终端关闭则失效 第二种方式&#xff0c;修改/etc/profile文件 特点&#xff1a;对所有用户永久有…

算法刷题打卡第29天:省份数量---并查集

省份数量 难度&#xff1a;中等 有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市&#xff0c;组内不…

SQL注入漏洞 | iwebsec

文章目录靶场搭建SQL注入漏洞靶场搭建 配置 云服务器&#xff1a;阿里云 系统&#xff1a;CentOS 7.6 靶场&#xff1a;iwebsec CentOS-7.6安装docker 安装iwebsec 启动靶场 docker run --restartalways --name iwebsec -it -dp 8001:80 iwebsec/iwebsec访问不成功 可能是…

希望流程挖掘成为撬动企服市场的突破口 | 专访凡得科技CEO海广跃、首席技术顾问刘聪

2022年&#xff0c;全球流程挖掘市场规模预计将达70多亿人民币&#xff0c;而目前中国流程挖掘行业尚处于市场启蒙期&#xff0c;仅少数大型企业与机构对流程挖掘进行了初步或尝试性的投入。从目前来看&#xff0c;原生流程挖掘厂商会直接面向客户输出流程挖掘能力&#xff0c;…

Spring集合注入

一、环境准备 创建一个Maven项目pom.xml添加Spring依赖resources下添加spring的配置文件applicationContext.xml项目中添加BookDao、BookDaoImpl类 public interface BookDao {public void save(); }public class BookDaoImpl implements BookDao {private int[] array;priva…

容器云平台初始化(harbor的安装部署)

1.虚拟机规划 设备说明主机名接口IP地址虚拟机1MasterEth010.0.0.10/24虚拟机2Node1Eth010.0.0.20/24虚拟机3HarborEth010.0.0.30/24 2.容器云平台初始化(harbor的安装部署) 1.根据规划的IP地址&#xff0c;创建虚拟机&#xff0c;确保网络正常通信。按照规划表修改主机名并关…

Linux-ACL权限

ACL权限简介 ACL&#xff1a;access control list 允许给任何用户或者用户组设置任何文件或者目录的访问权限 查看Linux是否开启ACL dumpe2fs Linux一般都开启了ACL权限&#xff0c;可以使用下面的命令查看分区的ACL权限是否打开 首先可以使用df -h或者lsblk来查看Linux系统…

JioNLP上的那些好用的冷门工具

大家好&#xff0c;JioNLP(https://github.com/dongrixinyu/JioNLP)目前已经在Github上有了1600星的点赞&#xff0c;下载安装量大概有几万了。 被使用最多的功能&#xff0c;也是被问得最多的&#xff0c;主要是关键短语抽取、时间语义解析、地址按省市县三级解析等等。其它功…