初识 MongoDB

4 阅读2分钟

认识 MongoDB

MongoDB 是一个基于文档的 NoSQL(非关系型)数据库 。它不像 MySQL 那样把数据存在格子状的表里,而是存成类似 JSON 的“文档” 。

1. 核心概念对比

为了方便理解,你可以直接对照你熟悉的 MySQL 来记忆:

概念MongoDBMySQL (关系型)说明
存储容器数据库 (Database)数据库 (Database)存储数据的总仓库
数据集合集合 (Collection)表 (Table)类似 Java 中的类或表结构
数据记录文档 (Document)行 (Row)每一条具体的数据记录
数据标识_id主键 (Primary Key)自动生成的唯一标识符

2. 为什么大模型项目(AI)首选 MongoDB?

在你目前的学习路径中,使用 MongoDB 存储聊天记忆主要基于以下原因:

  • 极高的灵活性:它不需要预先定义严格的表结构 。这非常适合聊天记录,因为消息内容可能是纯文本、图片链接或者复杂的元数据,MongoDB 能轻松应对这种非结构化数据 。
  • 开发效率高:数据以 BSON(二进制 JSON)格式存储,这和 Java 中的对象、Map 结构匹配度极高,存取时不需要写复杂的 SQL 关联查询 。
  • 高性能与可扩展性:设计理念就是为了应对大数据量和高性能需求,这对于需要频繁读写对话历史的 AI 应用至关重要 。

3. 基础操作(CRUD)

如果你直接进命令行(或通过 Docker 的 mongosh)操作,最常用的命令如下:

  • 插入文档db.collection.insertOne({name: "张三", age: 20})
  • 查询文档db.collection.find()
  • 更新文档db.collection.updateOne({name: "张三"}, {$set: {age: 21}})
  • 删除文档db.collection.deleteOne({name: "张三"})

4. 重点提示

LangChain4j 项目中,我们不需要手写这些命令。

  • 我们利用 Spring Data MongoDB 提供的 MongoTemplate 来进行操作 。
  • 你会定义一个 Java 实体类(如 ChatMessages),通过 @Document 注解将其映射到 MongoDB 的集合中 。