数据库MongoDB详解

文章目录

    • 入门指南
      • 1. 安装 MongoDB
      • 2. 启动 MongoDB 服务
      • 3. 连接到 MongoDB
      • 4. 创建数据库和集合
      • 5. CRUD 操作
      • 6. 索引
      • 7. 备份与恢复
    • 不同场景下的应用方式:
    • 应用案例展示

入门指南

MongoDB 是一个基于分布式文件存储的非关系型数据库(NoSQL),它以其灵活的数据存储、高可扩展性和高性能而受到许多开发者的喜爱。下面是一个简单的 MongoDB 入门指南,帮助你快速开始使用 MongoDB。

1. 安装 MongoDB

首先,你需要在你的计算机上安装 MongoDB。访问 MongoDB 官方网站 下载适合你操作系统的安装包,并按照官方文档的指引完成安装过程。

2. 启动 MongoDB 服务

  • Windows:通过命令提示符,进入 MongoDB 的 bin 目录下,运行 mongod.exe 命令来启动 MongoDB 服务。如果是第一次使用,可能需要创建数据存储目录,如 mkdir \data\db
  • Linux/macOS:在终端中,直接运行 mongod 命令。同样地,如果遇到权限问题或初始化问题,可能需要手动创建数据目录并赋予相应权限。

3. 连接到 MongoDB

安装并启动 MongoDB 之后,你可以使用 mongo 命令行工具来连接到 MongoDB 服务器:

mongo

默认情况下,mongo 客户端会连接到本地的 MongoDB 服务器,默认端口为 27017。

4. 创建数据库和集合

在 MongoDB 中,数据库和集合的概念分别对应于关系型数据库中的数据库和表。你可以很容易地创建它们:

// 切换到(或创建)一个名为 myDatabase 的数据库
use myDatabase// 插入一条文档到集合中,如果集合不存在则自动创建
db.myCollection.insert({ name: "Alice", age: 30 })

5. CRUD 操作

创建(Create)

db.myCollection.insert({ name: "Bob", age: 25 })

读取(Read)

// 查询所有文档
db.myCollection.find()// 条件查询
db.myCollection.find({ age: { $gt: 20 } })

更新(Update)

// 更新第一个匹配的文档
db.myCollection.update({ name: "Bob" }, { $set: { age: 26 } })// 更新所有匹配的文档
db.myCollection.updateMany({ age: 26 }, { $set: { age: 27 } })

删除(Delete)

// 删除第一个匹配的文档
db.myCollection.remove({ name: "Alice" })// 删除所有匹配的文档
db.myCollection.deleteMany({ age: 27 })

6. 索引

为了提高查询效率,可以为集合创建索引:

db.myCollection.createIndex({ name: 1 }) // 1 表示升序,-1 表示降序

7. 备份与恢复

MongoDB 提供了多种备份和恢复数据的方式,如使用 mongodumpmongorestore 工具。这些高级操作通常涉及更多的配置和命令行参数,具体方法可以参考 MongoDB 的官方文档。

以上就是 MongoDB 的一个非常基础的入门介绍。MongoDB 功能强大,支持复杂的查询、聚合操作、分片等高级特性,随着你的深入学习,你会发现更多实用的功能。推荐查阅官方文档和参与社区讨论,以获得更全面的学习资源和帮助。

不同场景下的应用方式:

MongoDB 在多个行业中都有着广泛的实际应用,下面几个具体的案例用来展示其在不同场景下的应用方式:

  1. 游戏场景

    • 一个在线游戏平台使用 MongoDB 存储用户账户信息、角色属性、装备、积分等数据。由于游戏数据经常更新且结构多样,MongoDB 的文档存储模型和内嵌文档特性非常适合此类场景,使得查询和更新变得简单高效。
  2. 物流场景

    • 一家物流公司利用 MongoDB 来管理订单信息,包括订单状态、物流轨迹、客户信息等。通过内嵌数组的形式存储订单的每次状态变更,使得查询某一订单的完整历史记录变得简单快捷,提高了物流跟踪的效率。
  3. 社交网络

    • 一个社交应用程序使用 MongoDB 存储用户个人资料、好友关系、动态消息、评论等数据。MongoDB 的地理位置索引功能使得“附近的人”、“位置标签”等功能得以轻松实现,增强了社交互动体验。
  4. 物联网(IoT)数据收集与分析

    • 在智能城市项目中,MongoDB 被用于收集来自成千上万传感器的数据,比如温度、湿度、交通流量等。这些数据被用来进行实时分析和长期趋势预测,帮助城市管理者做出更加明智的决策。
  5. 电子商务平台

    • 一个电子商务网站利用 MongoDB 存储商品目录、用户购物车、订单历史、用户行为日志等。MongoDB 的高可扩展性确保了在大型促销活动期间,即使面临巨大流量,也能维持高性能的查询和写入操作。
  6. 日志管理和分析

    • 在一个云计算服务平台中,MongoDB 用于存储和分析服务器日志、应用日志和安全日志。其灵活的数据模式允许不同类型的日志以统一的方式存储,而强大的查询功能便于快速定位问题和进行性能优化。
  7. 内容管理系统(CMS)

    • 一个新闻网站使用 MongoDB 管理文章、图片、视频等内容。MongoDB 的非关系型特性使得存储富媒体内容变得容易,而其全文搜索功能则提升了内容检索的速度和准确性。

这些案例展示了 MongoDB 如何以其灵活的数据模型、高可扩展性和高性能,满足了不同业务场景的需求,特别是在处理大量非结构化或半结构化数据时展现出独特的优势。

应用案例展示

以下是一个简单的 Java 应用案例,演示了如何使用 Java 连接到 MongoDB 数据库并执行基本的 CRUD 操作。这个例子将展示如何创建一个用户集合(collection),插入一些用户文档,并查询这些文档。

首先,确保你已经在项目中添加了 MongoDB Java 驱动的依赖。如果你使用 Maven,可以在 pom.xml 文件中添加如下依赖:

<dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId><version>4.7.0</version> <!-- 请检查最新版本 -->
</dependency>

然后是 Java 代码示例:

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;public class MongoDBExample {public static void main(String[] args) {// 连接到 MongoDB 服务器MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");// 选择或创建一个数据库MongoDatabase database = mongoClient.getDatabase("myDatabase");// 获取或创建一个集合(类似 SQL 中的表)MongoCollection<Document> collection = database.getCollection("users");// 插入文档(类似 SQL 中的 INSERT)Document user1 = new Document("name", "Alice").append("email", "alice@example.com");Document user2 = new Document("name", "Bob").append("email", "bob@example.com");collection.insertMany(Arrays.asList(user1, user2));// 查询文档(类似 SQL 中的 SELECT)System.out.println("Finding users:");for (Document doc : collection.find()) {System.out.println(doc.toJson());}// 关闭连接mongoClient.close();}
}

这段代码首先通过 MongoClients.create 方法连接到本地的 MongoDB 服务器,默认端口为 27017。然后,它选择或创建了一个名为 myDatabase 的数据库,并在这个数据库中创建或获取了一个名为 users 的集合。接着,向这个集合中插入了两个用户文档。最后,遍历并打印出集合中的所有用户文档。

请注意,实际使用时需要根据你的 MongoDB 服务器地址和端口、数据库名称等实际情况调整连接字符串。此外,确保 MongoDB 服务已经启动并且可以从你的应用程序访问。

接下来,我们将在上述 Java 示例的基础上增加更新和删除文档的操作,以完成一个简单的 CRUD(创建 Create、读取 Read、更新 Update、删除 Delete)应用案例。

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import org.bson.Document;
import java.util.Arrays;public class MongoDBExample {public static void main(String[] args) {// 连接到 MongoDB 服务器MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");// 选择或创建一个数据库MongoDatabase database = mongoClient.getDatabase("myDatabase");// 获取或创建一个集合MongoCollection<Document> collection = database.getCollection("users");// 插入文档Document user1 = new Document("name", "Alice").append("email", "alice@example.com");Document user2 = new Document("name", "Bob").append("email", "bob@example.com");collection.insertMany(Arrays.asList(user1, user2));// 查询文档System.out.println("Finding users before update:");for (Document doc : collection.find()) {System.out.println(doc.toJson());}// 更新文档collection.updateOne(Filters.eq("name", "Alice"), Updates.set("email", "alice_new@example.com"));// 删除文档collection.deleteOne(Filters.eq("name", "Bob"));// 查询文档,查看更新和删除后的结果System.out.println("\nFinding users after update and delete:");for (Document doc : collection.find()) {System.out.println(doc.toJson());}// 关闭连接mongoClient.close();}
}

在这个扩展的示例中,我们首先查询了初始插入的用户文档。随后,使用 updateOne 方法更新了名为 “Alice” 的用户的电子邮件地址。这里,Filters.eq("name", "Alice") 用于指定要更新的文档条件,Updates.set("email", "alice_new@example.com") 指定了更新操作。接着,我们通过 deleteOne 方法删除了名为 “Bob” 的用户文档,使用 Filters.eq("name", "Bob") 来定位要删除的文档。

最后,再次查询集合中的文档,可以看到更新和删除操作的效果。

此案例进一步展示了 MongoDB Java 驱动程序如何执行基本的数据库操作,帮助你理解在实际应用中如何操作 MongoDB 数据库。

😍😍 大量H5小游戏、微信小游戏、抖音小游戏源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

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

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

相关文章

七天进阶elasticsearch[Three]

排序与分页 localhost:9200/book/_search get请求{"query":{"match_all": {}},"sort": [{"price": {"order": "desc"}}], "from":0,"size":3}简化body {"query": {"bool&qu…

Linux “ 软件管理 “

软件管理 widows 安装 方法一&#xff1a; 双击exe安装包&#xff0c;就可以安装。 用exe安装的软件会破记录到注册表中。 注册会记录安装位置&#xff0c;软件名称。 方法二&#xff1a; 用绿色方式进行安装。 不用写到注册表中&#xff0c;因此无法在开始菜单里面查看和卸…

AppInventor2有没有删除后的撤销功能?

问&#xff1a;不小心删除了组件&#xff0c;能撤回吗&#xff1f; 答&#xff1a;界面&#xff08;组件&#xff09;设计界面&#xff0c;没有撤销功能。代码&#xff08;逻辑&#xff09;设计视图&#xff0c;可以使用 CtrlZ 撤销&#xff0c;CtrlY 反撤销。 界面设计没有撤…

AIGC绘画设计——midjourney有哪些好用的关键词?

midjourney有哪些高级关键词&#xff1f; 这一期继续分享一些高级的关键词&#xff0c; 我有一些案例也是从其他博主那学习来的&#xff0c; 但为了尽可能不出错&#xff0c;每个案例都是自己尝试了很多次后才拿出来的。 挑选了几个效果比较好&#xff0c;使用场景较高的类型…

Odoo:全球用户规模最大的免费开源ERP,使用前必须关注的事项

在数字经济时代&#xff0c;使用企业资源规划 (ERP) 工具管理业务是优化绩效和获得最佳结果的必要条件。 Odoo作为世界上最受欢迎的免费开源企业管理软件&#xff0c;已成功服务全球超过1200万以上的企业用户规模&#xff0c;开源智造作为Odoo亚太地区的金牌服务机构&#xff…

JDK17新增的特性

1.yield关键字&#xff1a; 从Java13开始引入&#xff0c;yield关键字用于从case的代码块中获取返回值。 正常从case的代码中获取返回值&#xff1a; public static void main(String[] args) { int x1; int result0; switch (x){case 1,2,3,4,5:result10;break;case 10,20,3…

【Mybatis】INSERT INTO 遇到NULL怎么处理?

目录标题 背景-使用Mybatis手写批量插入Insert方法测试核心代码&#xff0c;author字段为null&#xff0c;插入条件怎么写&#xff1f; MybatisPlus解决方案自动填充字段 Mybatis解决方案if标签处理 问题&#xff1a;如果不在工程里面设置默认值&#xff1f;如何直接使用数据库…

Facebook广告账号Facebook新手如何避免账号被封?

Facebook作为全球最大的社交媒体平台之一&#xff0c;吸引着众多企业和个人用户进行社交和推广。然而&#xff0c;由于种种原因&#xff0c;Facebook账号有可能会被封禁。尤其是新号&#xff0c;在Facebook账号被封后不知道怎么办。今天小编整理了一些新手避免Facebook账号被封…

26-unittest之装饰器(@classmethod)

unittest中的setUp可以在每个测试方法运行前执行&#xff0c;有效的减少了代码量。但有个弊端&#xff0c;比如打开浏览器操作&#xff0c;执行每个测试方法前都要重新打开一次&#xff0c;这样就会浪费很多时间。 是否可以只打开一次浏览器&#xff0c;执行完所有的测试方法后…

Python做Web:深度剖析与多维评价

Python做Web&#xff1a;深度剖析与多维评价 Python作为一种强大的编程语言&#xff0c;在Web开发领域也有着广泛的应用。然而&#xff0c;关于Python做Web的效果如何&#xff0c;却是一个充满争议和困惑的话题。本文将从四个方面、五个方面、六个方面和七个方面进行深入剖析和…

Springboot jar运行时,将jar内的文件拷贝到文件系统中

背景 因为执行需要&#xff0c;需要把jar内templates文件夹下的的文件夹及文件加压到宿主机器的某个路径下&#xff0c; 以便执行对应的脚本文件 PS: 通过类加载器等方式&#xff0c;直接getFile遍历文件&#xff0c;在idea中运行是没问题的&#xff0c;但是当打包成jar运行就会…

从零手写实现 nginx-07-大文件传输 分块传输(chunked transfer)/ 分页传输(paging)

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们希望实现最简单的 http 服务信息&#xff0c;可以处理静态文件。 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 如果你对 n…

金融科技重塑跨境支付:创新引领全球支付新纪元

一、引言 随着全球化的加速和科技的飞速发展,跨境支付作为国际贸易的“血脉”,正经历着前所未有的变革。金融科技以其强大的创新能力和技术支撑,正在重塑跨境支付领域的格局,推动全球支付行业向更加高效、安全、便捷的方向发展。本文将深入探讨金融科技如何引领跨境支付的创…

Python高效计算库Joblib的详细入门教程

文章目录 1. Joblib库是什么&#xff1f;2. 核心功能介绍及演示2.1 高效序列化和反序列化对象2.2 快速磁盘缓存2.3 并行计算 1. Joblib库是什么&#xff1f; Joblib 是一个用于在 Python 中进行高效计算的开源库&#xff0c;提供了一些用于内存映射和并行计算的工具&#xff0…

图分类之Hierarchical Graph Differentiable Pooling (下)

作者代码链接 https://github.com/RexYing/diffpool 1. paper中介绍的图池化机制 SoftPoolingGcnEncoder 是为图结构数据设计的神经网络模型。它通过结合分层池机制扩展了传统图卷积网络&#xff08;GCN&#xff09;的功能。这种池化机制通过逐步减少节点数量&#xff0c;同…

【Mongodb】Mongodb亿级数据性能测试和压测

一&#xff0c;mongodb数据性能测试 如需转载&#xff0c;请标明出处&#xff1a;https://zhenghuisheng.blog.csdn.net/article/details/139505973 mongodb数据性能测试 一&#xff0c;mongodb数据性能测试1&#xff0c;mongodb数据库创建和索引设置2&#xff0c;线程池批量…

React+TS前台项目实战(一)-- 项目初始化配置及开此系列的初衷

文章目录 前言一、初始化项目二、基础配置1. 项目目录及说明如下2. TS版本使用Craco需注意 总结 前言 前面 后台管理系统实战 系列教程暂时告一段落了&#xff0c;想了解全局各种配置的可自行查看。本次教程将重点介绍React前台项目的实操&#xff0c;关于具体的配置&#xff…

龙迅LT8712X TYPE-C或者DP转HDMI加VGA输出,内置MCU,只是IIS以及4K60HZ分辨率

龙迅LT8712X描述&#xff1a; LT8712X是一种高性能的Type-C/DP1.2到HDMI2.0和VGA转换器&#xff0c;设计用于将USB Type-C源或DP1.2源连接到HDMI2.0和VGA接收器。LT8712X集成了一个DP1.2兼容的接收器&#xff0c;一个HDMI2.0兼容的发射机和一个高速三角机窝视频DAC。此外&…

Python 可变长参数的魔法:灵活函数设计的秘密

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 什么是可变长参数&#xff1f; 在 Python 中&#xff0c;可变长参数允许你向函数传入任意数量的参数&#xff0c;而无需预先定义它们的个数。这为编写更加灵活和通用的函数提供了可能。可变长参数主要有两种形式&am…

记录某书请求返回406及响应{“code“:-1,“success“:false}

今天测试某个平台的爬虫时使用requests post请求正常写了个测试脚本把各种参数带上出来以后出现了406情况&#xff0c;和网站数据是完全一样的 以为是 X-S、X-T参接不对&#xff0c;但在postman里测试又是可以的成功&#xff0c;以为是检验了参数顺序&#xff0c;测试发现也没…