当前位置: 首页 > news >正文

MongoDB 入门使用教程

MongoDB 入门使用教程

MongoDB 是一个开源的 NoSQL 数据库,使用文档(JSON-like)存储数据,与传统的关系型数据库不同,它不依赖表结构和行列的约束。MongoDB 提供了强大的查询能力,支持高效的数据存储和检索,适合大数据存储、实时数据处理、快速原型设计等应用场景。

本教程将帮助你从基础到进阶,逐步掌握 MongoDB 的基本使用方法。

一、安装 MongoDB

在开始使用 MongoDB 之前,首先需要安装 MongoDB。

  • Windows 安装教程:参考 Windows 安装 MongoDB。
  • Linux 安装教程:参考 Linux 安装 MongoDB。
  • macOS 安装教程:参考 macOS 安装 MongoDB。

完成安装后,确保你已经启动了 MongoDB 服务。

二、连接 MongoDB

安装 MongoDB 后,你可以使用 MongoDB 提供的命令行工具 mongo 连接到数据库。

  1. 启动 MongoDB 服务(在命令行中执行):

    mongod --dbpath C:\data\db
    
  2. 连接 MongoDB

    打开新的命令行窗口,输入以下命令:

    mongo
    

    连接成功后,你将进入 MongoDB Shell,可以在其中执行 MongoDB 的各种命令。

三、数据库基本操作

3.1 创建数据库

在 MongoDB 中,数据库是在你首次插入数据时自动创建的,因此你不需要显式地创建数据库。你可以使用 use 命令切换到一个数据库,如果数据库不存在,它会被自动创建。

use mydb

这里 mydb 是数据库名,执行后会切换到 mydb 数据库,若不存在则会在插入数据时创建。

3.2 查看数据库

查看当前系统中存在的所有数据库:

show dbs

3.3 删除数据库

要删除当前使用的数据库,可以使用 db.dropDatabase() 命令。

db.dropDatabase()

该命令会删除当前数据库及其所有数据。

四、集合基本操作

在 MongoDB 中,数据被存储在集合(Collection)中,类似于传统关系型数据库中的表。

4.1 创建集合

集合是在你插入第一条数据时自动创建的。因此,你不需要显式地创建集合,只要插入数据,它就会自动创建。

use mydb  # 切换到数据库
db.createCollection("mycollection")  # 显式创建集合

4.2 查看集合

要查看当前数据库中所有的集合,可以使用:

show collections

4.3 删除集合

如果你想删除某个集合,可以使用:

db.mycollection.drop()

这会删除 mycollection 集合及其数据。

五、文档基本操作

MongoDB 的核心是文档,数据以 JSON-like 格式存储,每个文档都是一个键值对(key-value)。

5.1 插入文档

在 MongoDB 中,插入数据使用 insert 操作,最常用的是 insertOneinsertMany

插入单条数据
db.mycollection.insertOne({ name: "John", age: 30, city: "New York" })
插入多条数据
db.mycollection.insertMany([{ name: "Alice", age: 25, city: "London" },{ name: "Bob", age: 27, city: "Paris" }
])

5.2 查询文档

MongoDB 支持丰富的查询功能,你可以根据条件查询文档。

查询所有文档
db.mycollection.find()
查询单条数据
db.mycollection.findOne({ name: "John" })
查询满足条件的文档
db.mycollection.find({ age: { $gt: 20 } })

5.3 更新文档

MongoDB 提供了 updateOneupdateManyreplaceOne 等方法用于更新文档。

更新单条文档
db.mycollection.updateOne({ name: "John" },{ $set: { age: 31 } }
)
更新多条文档
db.mycollection.updateMany({ age: { $gt: 25 } },{ $set: { city: "Updated City" } }
)

5.4 删除文档

你可以使用 deleteOnedeleteMany 删除文档。

删除单条数据
db.mycollection.deleteOne({ name: "John" })
删除多条数据
db.mycollection.deleteMany({ age: { $lt: 30 } })

六、常用查询操作符

MongoDB 支持丰富的查询操作符,以下是一些常用的操作符:

  • $eq:等于
  • $ne:不等于
  • $gt:大于
  • $lt:小于
  • $gte:大于等于
  • $lte:小于等于
  • $in:在某个集合中
  • $nin:不在某个集合中
示例:查询年龄大于 25 的用户
db.mycollection.find({ age: { $gt: 25 } })

七、索引操作

MongoDB 支持创建索引来提高查询效率。你可以在某个字段上创建索引,类似于关系数据库中的索引。

7.1 创建索引

db.mycollection.createIndex({ name: 1 })

上述命令会在 name 字段上创建升序索引。

7.2 查看索引

db.mycollection.getIndexes()

7.3 删除索引

db.mycollection.dropIndex("name_1")

八、聚合操作

MongoDB 提供了强大的聚合框架,用于对数据进行分组、排序、过滤等操作。

8.1 聚合查询

db.mycollection.aggregate([{ $match: { age: { $gt: 25 } } },  // 过滤{ $group: { _id: "$city", count: { $sum: 1 } } },  // 分组统计{ $sort: { count: -1 } }  // 按照计数排序
])

8.2 聚合管道

聚合操作通常是通过管道(pipeline)执行的,每个阶段的输出都可以作为下一个阶段的输入。

九、备份与恢复

MongoDB 提供了 mongodumpmongorestore 工具来备份和恢复数据库。

9.1 备份数据库

mongodump --out=/path/to/backup

9.2 恢复数据库

mongorestore --dir=/path/to/backup

十、总结

本教程涵盖了 MongoDB 的基本使用操作,包括数据库、集合、文档的增删改查,常用查询操作符,以及如何创建索引和进行聚合操作。MongoDB 提供了灵活的数据存储结构,适用于需要快速开发和高效存储的大数据应用。

随着你对 MongoDB 的深入了解,你可以尝试更多高级功能,如复制集、分片、事务等。如果你是 MongoDB 的初学者,建议通过实践加深理解并使用 MongoDB 的官方文档进行更详细的学习。

更多资源

  • MongoDB 官方文档
  • MongoDB 入门教程

希望这篇教程能帮助你快速上手 MongoDB!

相关文章:

MongoDB 入门使用教程

MongoDB 入门使用教程 MongoDB 是一个开源的 NoSQL 数据库,使用文档(JSON-like)存储数据,与传统的关系型数据库不同,它不依赖表结构和行列的约束。MongoDB 提供了强大的查询能力,支持高效的数据存储和检索…...

PowerBI动态路径获取数据技巧

PowerBI动态路径获取数据技巧 场景一:同事接力赛——不同电脑共用模板 (想象一下:小王做完报表要传给小李,结果路径总对不上怎么办?) 这种情况就像接力赛交接棒,每台电脑的账户名不同&#xff0…...

【数据结构】优先级队列

目录 1. 优先级队列概念 2. 优先级队列的模拟实现 2.1 堆的概念 2.2 堆的存储方式 2.3 堆的创建 2.3.1 向下调整的时间复杂度 2.3.2 建堆时间复杂度 2.3.3 向上调整的时间复杂度 2.4 堆的插入与删除 3. 堆的应用 4. 常用接口介绍 4.1 PriorityQueue的特性 4.2 Pri…...

Myweb项目——面试题总结

一.项目描述 项⽬概述:本项⽬在云服务上开发了⼀个后端服务器与前端⻚⾯为⼀体的⾳乐专辑 鉴赏⽹站,旨在为⽤⼾提供丰富的⾳乐专辑信息展⽰和优 质的浏览体验。 主要内容及技术: 后端开发:利⽤ C 语⾔构建后端服务器,…...

用高德API提取广州地铁线路(shp、excel)

目录 结果示例html文件——直观看出输出的效果excel文件——包括地铁的具体信息完整代码网络上现有的地铁数据要么过于老旧且不便于更新,要么过于定制化限定于具体的城市无法灵活调整得到自己真正想要的那部份数据。而使用高德的API可以非常方便得到全国各地的地铁数据,而且可…...

leetcode110 平衡二叉树

一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。 递归:…...

二、信息时代社会结构的转变

到了信息时代,以及在核武器的前提下,上述的社会结构的逻辑,就有了一个根 本性的转变,就是暴力的成本和收益,都在下降。 暴力的成本在降低。比如说枪支,它的制造和分发都变得非常容易。现在我们都 知道有 3D 打印,它就好像工业时代的印刷机,印刷圣经或者书籍,使知识更加 普及和容…...

Vue2+ElementUI实现无限级菜单

使用Vue2和ElementUI实现无限级菜单,通常菜单数据以树形结构存储,每个菜单包含多个子菜单 ,子菜单又可以继续包含更深层次的子菜单项。所以,需要使用递归形式,完成子项菜单的渲染。 这里,结合Element UI界面的el-menu和el-submenu组件来构建菜单结构,有子菜单时使用el-s…...

YTJ笔记——FFT、NCC

FFT算法 快速傅里叶算法 为了计算两个多项式相乘(卷积),将多项式系数表示法转换成点值表示法 F(g(x)∗f(x))F(g(x))F(f(x)) 超详细易懂FFT(快速傅里叶变换)及代码实现_傅立叶变换编程-CSDN博客 NCC算法…...

模型 隐含前提

系列文章分享模型,了解更多👉 模型_思维模型目录。隐藏的思维地基,决策的无声推手。 1 隐含前提模型的应用 1.1 金融投资决策—科技股估值隐含前提的验证 行业:金融投资 应用方向:投资逻辑验证 背景解读&#xff1…...

大模型微调与蒸馏的差异性与相似性分析

大模型微调与蒸馏的差异性分析 一、定义与核心目标差异 大模型微调 在预训练大模型基础上,通过少量标注数据调整参数,使模型适应特定任务需求。核心目标是提升模型在特定领域的性能,例如医疗影像分析或金融预测。该技术聚焦于垂直场景的精度…...

Ubuntu下安装vsode+qt搭建开发框架(一)

Ubuntu下安装vsode+qt搭建开发框架(一) g++的编译环境,这里不介绍,可点击这里查看 查看一下当前的g++环境 g++ --version g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copyin…...

单片机-89C51部分:3、创建工程

飞书文档https://x509p6c8to.feishu.cn/wiki/Mzhnwb1qni6YkykJtqXc17XMnre 创建工程 首先创建一个文件夹,用来存放工程文件,文件夹名称最好为英文,例如Demo1。 打开软件KEIL,上方菜单栏选择Project ->new uVision Project&am…...

从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入

以下是为 registry.k8s.io/pause:3.8 镜像的导出与导入操作定制的完整教程,适用于 Kubernetes 集群中使用 containerd 作为容器运行时的场景。本教程包含详细步骤、常见问题解析及注意事项。 从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入 背景说明 Kuber…...

详解Adobe Photoshop 2024 下载与安装教程

Adobe Photoshop下载安装和使用教程 Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑和创造工作&#xff0c…...

thinking-intervention开源程序用于DeepSeek-R1等推理模型的思维过程干预,有效控制推理思考过程

一、软件介绍 文末提供程序和源码下载 thinking-intervention开源程序用于DeepSeek-R1等推理模型的思维过程干预,有效控制推理思考过程。基于论文 《Effectively Controlling Reasoning Models through Thinking Intervention》 实现的思维干预技术,用于…...

Qt 5.15 编译路径吐槽点

在Qt 5.15以前,勾选“Shadow build”会自动将编译文件放在同一个目录下(区分编译器类型、Qt版本、debug和release等),可将代码文件和编译文件区分开,用户不用操心。但是奇葩的是,这个功能Qt 5.15居然失效了…...

【机器学习-线性回归-3】深入浅出:简单线性回归的概念、原理与实现

在机器学习的世界里,线性回归是最基础也是最常用的算法之一。作为预测分析的基石,简单线性回归为我们理解更复杂的模型提供了完美的起点。无论你是机器学习的新手还是希望巩固基础的老手,理解简单线性回归都至关重要。本文将带你全面了解简单…...

【MCP Node.js SDK 全栈进阶指南】中级篇(5):MCP客户端高级开发

在前面的系列文章中,我们主要关注了服务器端的开发,包括基础服务器构建、资源设计、身份验证与授权以及错误处理与日志系统。本篇文章将转向客户端,探讨MCP TypeScript-SDK在客户端开发中的高级应用。 客户端开发是MCP应用的重要组成部分,它连接了用户与服务器,提供了交互…...

RASP技术在DevOps中的安全应用

随着新技术的不断演进,DevOps开发模式不断被利用,Web应用程序的开发相比过往更高效。随之而来的是保护这些应用程序同样面临着巨大挑战,黑客的攻击手段不断多变,而DevOps团队成员却不都是安全专家,难以保证应用程序的安…...

2025.04.26-饿了么春招笔试题-第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 魔法网格变换计数 问题描述 LYA是一位魔法研究学者,她正在研究一种特殊的魔法网格。这个网格有 n n n...

Linux线程与进程:探秘共享地址空间的并发实现与内

Linux系列 文章目录 Linux系列前言一、线程的概念二、线程与地址空间2.1 线程资源的分配2.2 虚拟地址到物理地址的转换 三 、线程VS进程总结 前言 在Linux操作系统中,线程作为CPU调度的基本单位,起着至关重要的作用。深入理解线程控制机制,是…...

数据结构手撕--【堆】

目录 ​编辑 定义结构体: 初始化: 插入数据: 删除: 取堆顶元素: 堆销毁: 判断堆是否为空: TopK问题: 堆其实是完全二叉树 物理结构:二叉树的层序遍历&#xff08…...

MySQL基本命令--系统+用户+表

前言:在当今数据驱动的时代,关系型数据库依然是构建信息系统的中坚力量,而MySQL作为开源领域中最广泛使用的数据库管理系统之一,以其高性能、稳定性和易用性赢得了开发者和企业的青睐。无论是在小型博客系统中承担数据存储职责&am…...

4.23-4.26学习总结 HTML—CSS常见标签和样式

页部导航栏: flex样式: 表单标签: (25行是设置点击按钮) 表单项标签: 搜索表单区域: 底部版权区域: 总结:...

使用Django框架表单

使用Django框架表单 文章目录 使用Django框架表单[toc]1.使用Form类构建表单2.表单字段与Widget控件 1.使用Form类构建表单 【创建项目和应用】 PS C:\Users\ls> cd E:\Python\ PS E:\Python> django-admin.exe startproject FormSite PS E:\Python> cd .\FormSite\…...

OpenCV第6课 图像处理之几何变换(缩放)

1.简述 图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。几何变换并不改变图像的像素值,只是在图像平面上进行像素的重新安排。 根据OpenCV函数的不同,本节课将映射关系划分为缩放、翻转、仿射变换、透视等。 2.缩放 2.1 函数…...

Python AI图像生成方案指南

1. 简介 AI图像生成是当前最热门的AI应用领域之一,Python提供了多种工具和库来实现这一功能。本指南将介绍几种主流的AI图像生成方案及其Python实现方法。 2. 主流AI图像生成技术 2.1 生成对抗网络(GANs) 原理:由生成器和判别器组成的对抗系统 特点&am…...

【C++】stack、queue和priority_queue的模拟实现

文章目录 前言一. stack1.1 stack的介绍1.2 stack的使用1.3 stack的模拟实现 二. queue2.1 queue的介绍2.2 queue的使用2.3 queue的模拟实现 三. deque3.1 deque的原理介绍3.2 deque的缺陷3.3 为什么选择deque作为stack和queue的底层默认容器 四. priority_queue(优…...

Jmeter数据库url开关设置+常用Beanshell

1、数据库url开关设置 (79 90) jdbc:mysql://test.lemonban.com:3306/future?allowMultiQueries-true&characterEncodingUTF-8 多条查询开关:allowMultiQueriestrue 字符集配置:characterEncodingUTF-8 2、用BeanShell提取Map中的方…...

NtripShare 2025第一季度主要技术进展

GNSS方面 1、开源GNSS接收机配置软件基础版本。 2、商业版本GNSS接收机配置软件,增加PPP、文件保存、前端解算(静态、RTK-Static),前端坐标转换。 3、GNSS接收机配置软件全面适配米尔T133i硬件方案。 视觉检测方面 1、做出第…...

Linux系统编程之内存映射

概述 内存映射是操作系统提供的一种机制,使得文件或设备的内容可以直接映射到进程的虚拟地址空间中。这意味着,我们可以像访问数组一样读写文件内容,而不需要显式地调用I/O函数进行数据传输。内存映射适用于多种应用场景,包括但不…...

一文详解Adobe Photoshop 2025安装教程

Adobe Photoshop下载安装和使用教程 Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑和创造工作&#xff0c…...

ShenNiusModularity项目源码学习(23:ShenNius.Admin.Mvc项目分析-8)

用户列表页面用于检索、新建、编辑、删除系统用户,同时设置用户角色。该页面对应的文件Index.cshtml位于ShenNius.Admin.Mvc项目的Areas\Sys\Views\User内,同目录下还有Modify.cshtml(新建、编辑用户)、SetRole.cshtml&#xff08…...

vue中 vue.config.js反向代理

新建一个node 服务 1 npm init -y //创建一个package.json 2.npm i express 3. 新建一个app.js 4.键入代码 const express require("express") const app express()app.get("/user",(req,res)>{res.send({"name":"good"…...

AIGC赋能智慧医疗:从影像诊断到个性化治疗的革命性突破

一、医疗AIGC技术架构 1.1 医疗场景技术挑战 医疗环节 行业痛点 AIGC解决方案 影像诊断 人工阅片效率低 多模态病灶分割与分级系统 病历管理 结构化程度低 语音转文本智能编码 药物研发 周期长成本高 分子生成与虚拟筛选 个性化治疗 方案标准化不足 基因组学临床数据融合模型 1…...

Yarn 安装与使用教程

Yarn 安装与使用教程 Yarn 是一个由 Facebook 开发的 JavaScript 包管理工具,它比传统的 npm 更加高效、可靠,并且在性能上有所提升。Yarn 主要解决了 npm 安装速度慢、并发性差、缓存机制不完善等问题,它提供了更快的安装速度、更稳定的依赖…...

机器学习之二:指导式学习

正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...

【学习笔记】检索增强生成(RAG)技术

检索增强生成(RAG)技术:原理、实现与发展趋势 1. RAG技术概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与生成模型相结合的技术,旨在增强大型语言模型的知识能力和…...

计算机视觉——对比YOLOv12、YOLOv11、和基于Darknet的YOLOv7的微调对比

概述 目标检测领域取得了巨大进步,其中 YOLOv12、YOLOv11 和基于 Darknet 的 YOLOv7 在实时检测方面表现出色。尽管这些模型在通用目标检测数据集上表现卓越,但在 HRSC2016-MS(高分辨率舰船数据集) 上对 YOLOv12 进行微调时&…...

Pygame跨平台打包:将游戏发布到Windows、Mac和Linux

Pygame跨平台打包:将游戏发布到Windows、Mac和Linux 引言 在游戏开发的世界中,Pygame 是一个非常受欢迎的库,它使得使用 Python 编写 2D 游戏变得简单而有趣。然而,当你完成了一个游戏并希望将其发布给更多的玩家时,如何将你的游戏打包成可以在不同操作系统上运行的可执…...

关于图论的知识

如果一个无向图有 $n\times (n-1)\div 2$ 条边,称为**完全图** 如果一个完全图任意两个点都可以互相到达,称为**连通图** 一个包含 $dfs$ 与 $bfs$ 的图的遍历程序 程序可做到的: 1、每一行输出一个 **搜索树** 2、$dfs$ 与 $bfs$ 并存 c…...

365打卡第R3周: RNN-心脏病预测

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 🏡 我的环境: 语言环境:Python3.10 编译器:Jupyter Lab 深度学习环境:torch2.5.1 torchvision0…...

如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题

如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题 在现代软件开发过程中,开发人员通常使用集成开发环境(IDE)如IntelliJ IDEA、Visual Studio Code(VSCode)等进行Node.js项目开发…...

嵌入式学习笔记 - HAL_xxx_MspInit(xxx);函数

使用cubeMX生成的HAL库函数中,所有外设的初始化函数HAL_xxx_Init(&xxxHandle)中都存在有此调用函数,此调用函数其实是对各外设模块比如UART,I2C等的底层硬件初始化,包括UART时钟,以及UART用到的GPIO的工作模式以及…...

Dify框架面试内容整理-Dify框架

什么是Dify框架? Dify框架是一个开源的AI应用开发平台,专注于帮助开发者和非技术人员快速构建、部署和管理基于大语言模型(如GPT系列、国产开源模型)的应用。 Dify框架的特点:...

计算机网络的五层结构(物理层、数据链路层、网络层、传输层、应用层)到底是什么?

文章目录 五层结构1. 物理层(Physical Layer)2. 数据链路层(Data Link Layer)3. 网络层(Network Layer)4. 传输层(Transport Layer)5. 应用层(Application Layer&#xf…...

【计算机视觉】CV实战项目 -深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案

深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案 技术背景与项目概述核心功能与特点实战部署指南环境要求硬件要求软件依赖 项目结构快速开始1. 获取项目2. 准备模型文件3. 运行示例 高级使用技巧模型切换背景替换性能优化 常见问题与解决方案技术原理…...

面试新收获-大模型学习

大模型原理 Transformer 架构与自注意力机制 Transformer 是当前大多数大模型采用的核心架构,由编码器-解码器组成,摒弃了传统 RNN 的顺序处理方式。Transformer 中关键在于多头自注意力机制(Multi-Head Self-Attention)&#xf…...

《Keras 3部署全攻略:从新手到实战高手》

《Keras 3部署全攻略:从新手到实战高手》 一、引言:开启 Keras 3 部署之旅 在深度学习的广阔领域中,Keras 一直以其简洁易用、高度模块化的特性,深受开发者的喜爱,被誉为深度学习的 “福音”。而如今,Keras 3 的强势登场,更是为这个领域注入了全新的活力。它像是一位集…...