MongoDB 入门及实践

embedded/2024/10/18 12:01:04/

MongoDB 入门

        • 一、简介
        • 二、安装与配置
          • 1. 下载与安装
          • 2. 启动 MongoDB
          • 3. 使用 MongoDB Shell
        • 三、基本概念
        • 四、基本操作
          • 1. 创建数据库
          • 2. 插入数据
          • 3. 查询数据
          • 4. 更新数据
          • 5. 删除数据
        • 五、高级主题
          • 1. 索引
          • 2. 聚合框架
          • 3. 分布式部署
          • 4. 安全性
        • 六、最佳实践
        • 七、Java开发实践
          • 1. 添加 Maven 依赖
          • 2. 建立连接
          • 3. 插入数据
          • 4. 查询数据
          • 5. 更新数据
          • 6. 删除数据
          • 7. 使用索引
          • 8. 聚合管道
          • 9.错误处理与资源管理

一、简介

MongoDB 是一个开源的文档数据库管理系统,属于 NoSQL 数据库的一种类型。它使用 JSON-BSON(Binary JSON)格式来存储数据,提供了高性能、高可用性和易于扩展的特点。MongoDB 支持灵活的文档结构,允许不同的数据存储在同一集合中,并提供丰富的查询语言来进行数据操作。

二、安装与配置
1. 下载与安装

前往 MongoDB 官方网站下载适合您操作系统的版本。对于 Windows、Linux 和 macOS,都有相应的安装包。

2. 启动 MongoDB

启动 MongoDB 的服务端,通常使用命令行工具 mongod 来启动服务。默认情况下,MongoDB 使用本地主机的 27017 端口,并且存储数据在 /data/db 目录下(Linux 和 macOS),Windows 上则是在 C:\data\db

mongod --dbpath /path/to/data/directory

如果需要更改默认设置,可以使用不同的选项来配置 mongod。

3. 使用 MongoDB Shell

MongoDB Shell 是一个命令行工具,用来与 MongoDB 交互。启动 shell 并连接到 MongoDB 服务器:

mongo
三、基本概念
1. 数据库

MongoDB 中的数据库类似于关系数据库中的数据库,用于存储集合和数据。

2. 集合

集合类似于关系数据库中的表,是一个特定数据库下的数据存储单位。集合不需要预先定义,插入数据时会自动创建集合。

3. 文档

文档是 MongoDB 中的基本数据单位,以键值对的形式存储,类似于 JSON 对象。

4. 字段

字段是文档中的名称/值对。字段名必须是字符串,而字段值可以是各种数据类型,包括数组和其他文档。

四、基本操作
1. 创建数据库

MongoDB 在插入数据时自动创建数据库。例如:

use myDatabase

如果 myDatabase 不存在,则会创建一个新的数据库

2. 插入数据

使用 insertOneinsertMany 方法向集合中插入文档:

db.myCollection.insertOne({name: "John Doe",age: 30,email: "john.doe@example.com"
})
3. 查询数据

使用 find 方法查询数据:

db.myCollection.find({ age: 30 })

可以使用 $and, $or 等逻辑运算符进行更复杂的查询。

4. 更新数据

使用 updateOneupdateMany 方法更新数据:

db.myCollection.updateOne({ name: "John Doe" },{ $set: { age: 31 } }
)
5. 删除数据

使用 deleteOnedeleteMany 方法删除数据:

db.myCollection.deleteOne({ name: "John Doe" })
五、高级主题
1. 索引

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

db.myCollection.createIndex({ age: 1 })

索引可以帮助加速查询速度,但也会影响写入性能和占用更多存储空间。

2. 聚合框架

MongoDB 提供了一个强大的聚合框架,可以执行复杂的数据分析任务:

db.myCollection.aggregate([{ $match: { age: { $gt: 25 } } },{ $group: { _id: "$city", totalPeople: { $sum: 1 } } }
])
3. 分布式部署

MongoDB 支持复制集和分片集群,可以用来实现高可用性和水平扩展。

4. 安全性

MongoDB 支持用户身份验证、访问控制和加密等功能来保障数据安全。

六、最佳实践
  • 数据建模:合理设计数据模型,利用 MongoDB 的灵活性来优化查询性能。
  • 性能调优:根据应用程序的需求调整数据库配置,优化索引和查询。
  • 备份与恢复:定期备份数据,并测试恢复流程以确保数据安全。
七、Java开发实践
1. 添加 Maven 依赖

pom.xml 文件中添加 MongoDB Java 驱动的依赖:

<dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId><version>4.4.0</version>
</dependency>

注意:请根据实际使用的 MongoDB 版本选择合适的驱动版本。

2. 建立连接

使用 MongoClients 类创建一个客户端实例,并指定 MongoDB 服务器的地址和端口:

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;public class MongoExample {public static void main(String[] args) {MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");MongoDatabase database = mongoClient.getDatabase("test");}
}
3. 插入数据

向集合中插入文档:

import org.bson.Document;
import com.mongodb.client.MongoCollection;MongoCollection<Document> collection = database.getCollection("documents");
Document doc = new Document("name", "John Doe").append("age", 30);
collection.insertOne(doc);
4. 查询数据

从集合中查询文档:

MongoCursor<Document> cursor = collection.find(eq("name", "John Doe")).iterator();
while (cursor.hasNext()) {System.out.println(cursor.next().toJson());
}
5. 更新数据

更新集合中的文档:

Document query = new Document("name", "John Doe");
Document update = new Document("$set", new Document("age", 31));
collection.updateOne(query, update);
6. 删除数据

从集合中删除文档:

collection.deleteOne(new Document("name", "John Doe"));
7. 使用索引

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

collection.createIndex(Indexes.ascending("name"));
8. 聚合管道

执行聚合查询:

Aggregation pipeline = Aggregation.newPipeline().match(Filters.eq("age", 30)).group("$name", Accumulators.sum("total", 1));
AggregationResults<Document> results = collection.aggregate(pipeline).into(new ArrayList<>());
9.错误处理与资源管理

在处理 MongoDB 操作时,应该适当地捕获异常并释放资源,例如关闭迭代器和客户端:

try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {// 执行数据库操作
} catch (Exception e) {// 处理异常
}

http://www.ppmy.cn/embedded/120501.html

相关文章

第166天:应急响应-拒绝服务钓鱼指南DDOS压力测试邮件反制分析应用日志

案例一&#xff1a;内网应急-日志分析-爆破&横向&数据库 数据库 这里不同数据库日志不一样&#xff0c;我用mysql分析 首先MySQL数据库需要支持远程连接 GRANT ALL PRIVILEGES ON . TO root% IDENTIFIED BY 123.com WITH GRANT OPTION; 其次开启日志 -- 查看general…

Git 使用方法

简介 Git常用命令 Git 全局设置 获取Git 仓库 方法二用的比较多 将仓库链接复制 在 git base here ----> git clone 仓库链接 工作区、暂存区、版本库 Git 工作区中文件中的状态 本地仓库的操作 远程仓库操作 git pull 将代码推送到远程仓库 1. git add 文件名 ---放…

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐&#xff1a;《算法竞赛》&#xff0c;算法竞赛大全书&#xff0c;网购&#xff1a;京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …

【React】useState 和 useRef:项目开发中该如何选择

如果你正踏入用 React 进行网页开发的世界&#xff0c;那你可能已经遇到了像 useState 和 useRef 这样的术语。这两个 Hook 在构建交互性和动态组件时起着至关重要的作用。 下面&#xff0c;我们将探讨它们是什么&#xff0c;它们的功能&#xff0c;它们的区别&#xff0c;并通…

mock数据,不使用springboot的单元测试

业务代码 package com.haier.configure.service.impl;import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.haier.common.util.RequestUtil; import com.haier.configure.entity.Langua…

Spring不能处理的循环依赖

文章目录 场景一&#xff1a;prototype 类型的循环依赖场景二&#xff1a; constructor 注入的循环依赖场景三&#xff1a;普通的 AOP 代理 Bean 的循环依赖–默认是可以的场景四&#xff1a;Async 增强的 Bean 的循环依赖总结 参考&#xff1a;https://blog.csdn.net/wang4896…

单片机学习笔记——入门51单片机

一、单片机基础介绍 1.何为单片机 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU 。内部集成了中央处理器CPU、随机存储器ROM、只读存储器RAM、定时器/计算器、中断系统和IO口等一系列电脑的常用硬件功能 单片机的任务是信息采集&#xff08;依靠传感器&a…

AI绘画实现数字人2D形象生成及3D数字人视频生成

概述 随着人工智能技术的不断进步&#xff0c;AI绘画已经成为数字艺术创作领域的重要工具。本章将详细介绍如何利用AI绘画技术生成数字人的2D形象&#xff0c;并进一步将其转化为3D数字人视频。通过一系列实践步骤和Python代码示例&#xff0c;您将能够掌握从平台使用到系统部…