MongoDB 使用记录

MongoDB 使用记录

项目里有一块访问日志需要存储,数据量大、结构灵活,不想为此专门建 MySQL 表,就选了 MongoDB 来存。这是当时接入时整理的笔记。

MongoDB 是为快速开发互联网 Web 应用而构建的数据库系统,其数据模型和持久化策略专为高读/写吞吐量和高自动灾备伸缩性场景设计。


安装

Windows

  1. 下载安装包,解压或运行安装程序
  2. 在安装路径下创建 data\dbdata\log 两个文件夹
  3. 创建 mongod.cfg 配置文件:
systemLog:
destination: file
path: 安装路径\data\log\mongod.log
storage:
dbPath: 安装路径\data\db
  1. 以管理员权限安装为 Windows 服务:
D:\MongoDB\bin\mongod.exe --config "D:\MongoDB\mongod.cfg" --install
  1. 服务管理:
net start MongoDB   # 启动
net stop MongoDB # 停止
D:\MongoDB\bin\mongod.exe --remove # 卸载服务

Linux(Docker)

docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:3.2

可视化管理工具推荐 Navicat 或 MongoDB Compass。


Spring Boot 接入(Spring Data MongoDB)

Spring Data MongoDB 以 Spring Data 风格操作 MongoDB,可以避免编写大量样板代码。

1. 添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2. 配置连接

spring:
data:
mongodb:
host: localhost
port: 27017
database: db_name

3. 定义实体类

文档对象的 ID 域加 @Id,需要检索的字段加 @Indexed

@Document        // 标识为 MongoDB 文档
@Data
public class IpSave {
@Id
private String id; // MongoDB 中 _id 对应 String 类型
@Indexed
private String ip;
private LocalDateTime time;
}

常用注解:

注解说明
@Document映射到 MongoDB 集合(类似 MySQL 的表)
@Id标识文档 ID 字段
@Indexed标识索引字段,提升查询性能

4. 自定义 Repository

继承 MongoRepository 接口,即可获得基本 CRUD 方法。衍生查询通过方法名自动推断 SQL,IDEA 会提示字段和条件关键字:

public interface IpSaveMongoRepository extends MongoRepository<IpSave, String> {

// 衍生查询:根据方法名自动推断查询条件
List<IpSave> findByIpLikeOrderByTimeDesc(String ip);

// @Query 注解:使用 MongoDB JSON 查询语句
// ?0 表示第一个参数,{ 'id': 1, 'ip': 1 } 表示只返回这两个字段
@Query(value = "{'ip': ?0}", fields = "{'id': 1, 'ip': 1}")
List<IpSave> findList(String ip);
}

在 Service 中注入 Repository 直接使用即可。