生成用于 MongoDB 的逼真虚拟数据

发布: (2026年3月31日 GMT+8 17:17)
4 分钟阅读
原文: Dev.to

Source: Dev.to

tl;dr

我构建了一个工具,利用从 MongoDB Compass 导出的数据模式,使用向量搜索来确定每个字段最合适的 Faker 方法,然后生成逼真的虚拟数据。

仓库地址在这里: mock-data

MongoDB Compass 现在支持数据建模,这是长期期待的功能。虽然很多人把模型当作数据字典使用,但拥有模型同样可以快速生成用于编码和测试的逼真虚拟数据。手动编写脚本既费时又繁琐,于是我决定把这个过程自动化。

How to make it look real?

如果你以前生成过虚拟数据,可能已经熟悉 Faker。自 2008 年诞生以来,Faker 提供了 280 多种常用数据的生成方法,如电子邮件、姓名、地址、车牌等,并且可以通过自定义提供者进行扩展。

与其重复造轮子,我使用 Faker for Python 来进行数据模拟。

Associate generator methods with fields

为了在不破坏 JSON 模式结构的前提下将 Faker 方法关联到字段,我在字段的 description 属性中嵌入一个用 # 包裹的注解。工具会提取两个 # 之间的文本,并将其作为 Faker 方法(包括任何参数)。你仍然可以在注解旁边加入普通描述。

Make it even easier

手动为每个字段添加注解仍然很繁琐。为自动选择 Faker 方法,我采用了 向量搜索ChromaDB

  1. 从库中提取所有 Faker 方法,并为每个方法名计算向量。
  2. 为模式中的每个字段名计算向量。
  3. 在向量数据库中搜索,找到与字段名向量最匹配的 Faker 方法。

Requirements for the approach

  • Faker 方法名必须具有语义(它们本身就是)。
  • 字段名应具有语义(对设计良好的模式通常成立)。
  • 所选的 Faker 方法必须能够生成可以转换为 JSON 模式中指定类型的数据。ChromaDB 的过滤功能可以强制执行此约束。

一些细微的优化进一步提升了猜测准确度。最终得到的工具可以自动从 MongoDB Compass 模式生成逼真的虚拟数据。

Usage

# Clone the repository
git clone https://github.com/zhangyaoxing/mock-data.git
cd mock-data

# Install in development mode
pip install -e .

# Generate dummy data as ejson files
mockdata -s schemas/BookStore.json -n 50 -t ejson output/

# Generate dummy data directly into MongoDB
mockdata -s schemas/BookStore.json -n 50 -t mongodb mongodb://localhost/

# Generate dummy data into Kafka
mockdata -s schemas/BookStore.json -n 50 -t kafka localhost:9092

GitHub repository: Mock Data

0 浏览
Back to Blog

相关文章

阅读更多 »

这只橡胶鸭不调试——它在吐槽

Rubber Roast — 一个 VS Code 扩展,将你的橡胶鸭子变成一个挑剔的代码评论员。灵感来源于 CS50 的 rubber‑duck debugging,这只鸭子不仅会…

MERN Quiz App 项目完成!

功能 - 📝 进行多项选择测验 - 📊 查看即时结果 - 🎨 简洁且响应式的 UI - ✅ 将测验存储在数据库中 - 🔄 轻松添加新测验