数据库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,一经查实,立即删除!

相关文章

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…

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

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

26-unittest之装饰器(@classmethod)

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

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

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

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

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

【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;测试发现也没…

JavaSE基础语法合集

随着不断学习&#xff0c;我们已经走完了JavaSE基础语法的所有内容&#xff0c;博主的单独语法篇共十二篇&#xff0c;感兴趣的也可以去看看&#xff0c;内容基本一致&#xff0c;目录是重新排布的&#xff0c;数组和方法都在初识Java章节。 适合&#xff1a;老手复习和新手从零…

Linux下的Git应用及配置

1、卸载 2、安装 3、创建并初始化 4、配置 &#xff08;附加删除语句&#xff09; 5、查看&#xff08;tree .git/&#xff09; 6、增加和提交 7、打印日志 8、验证已操作工作

sc.tl.rank_genes_groups()问题

今天被问到了一个关于sc.tl.rank_genes_groups()的奇怪的问题 import scanpy as sc import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt # from CellDART import da_cellfraction # from CellDART.utils import random_mix from…

谷歌个人开发者账号“14+20”封测没通过?你可能忽视了这个细节

众所周知&#xff0c;在Google play平台如果使用个人开发者账号上架应用&#xff0c;在提审正式版应用前&#xff0c;需要满足20人连续封闭测试14天的要求&#xff0c;不少开发者在这个阶段遇到了问题&#xff0c;被谷歌认为没满足要求&#xff0c;从而不能上架应用。 为什么你…

国产开发板——香橙派Kunpeng Pro的上手初体验

开发板&#xff08;Development Board&#xff09;是一种特殊的电子产品&#xff0c;它的主要目的是为了帮助开发者快速地设计、测试和验证电子产品的硬件和软件设计。开发板通常提供了一个完整的硬件平台&#xff0c;包括微控制器、存储器、接口和其他外围设备&#xff0c;开发…

性能狂飙:SpringBoot应用优化实战手册

在数字时代&#xff0c;速度就是生命&#xff0c;性能就是王道&#xff01;《极速启航&#xff1a;SpringBoot性能优化的秘籍》带你深入SpringBoot的内核&#xff0c;探索如何打造一个飞速响应、高效稳定的应用。从基础的代码优化到高级的数据库连接池配置&#xff0c;再到前端…

【深度学习-第6篇】使用python快速实现CNN多变量回归预测(使用pytorch框架)

上一篇我们讲了使用CNN进行分类的python代码&#xff1a; Mr.看海&#xff1a;【深度学习-第5篇】使用Python快速实现CNN分类&#xff08;模式识别&#xff09;任务&#xff0c;含一维、二维、三维数据演示案例&#xff08;使用pytorch框架&#xff09; 这一篇我们讲CNN的多变…