Docs 菜单
Docs 主页
/
MongoDB Atlas
/

生成合成数据

在此页面上

  • 先决条件
  • 步骤

您可以生成与实际数据模式一致的合成数据。合成数据对于测试和开发环境非常有用。

本教程连接到 Atlas 集群,并使用 Node.js 和 faker.js 生成合成数据 。要了解更多信息,请参阅 Faker JS 文档。

要使用本教程中的步骤创建合成数据,您必须:

  • 创建要向其中加载数据的 Atlas 集群。要了解更多信息,请参阅创建集群。

  • 安装 Node、NPM 和 MongoDB Node.js 驱动程序。

  • 安装 falser.js:

    npm install --save-dev @faker-js/faker

按照以下步骤在集群中生成合成数据:

1
  1. 运行以下命令以创建并导航到该应用的目录:

    mkdir syntheticdata
    cd syntheticdata
  2. 运行以下命令以初始化项目并将其链接到 npm

    npm init

    Enter接受entry point: (index.js)之外的所有默认值。 当终端返回entry point: (index.js)时,输入以下文本并按Enter

    myapp.js

    然后接受所有默认值,并在出现提示时输入 Yes

  3. 运行以下命令来安装 Web 应用程序框架 express

    npm install express --save
  4. 在您创建的目录中,创建一个名为 myapp.js 的文件。

2

myapp.js 文件中,添加以下代码。将以下占位符值替换为您的值,并保存文件的内容:

  • <YOUR-ATLAS-URI>:Atlas 集群的连接字符串。要了解如何查找连接字符串,请参阅查找 MongoDB Atlas 连接字符串。

  • <DATABASE-NAME>:要在 Atlas 中创建的数据库的名称。

  • <COLLECTION-NAME>:要在 Atlas 中创建的 collection 的名称。

// require the necessary libraries
const { faker } = require("@faker-js/faker");
const MongoClient = require("mongodb").MongoClient;
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
async function seedDB() {
// Connection URL
const uri = "<YOUR-ATLAS-URI>";
const client = new MongoClient(uri);
try {
await client.connect();
console.log("Connected correctly to server");
const collection = client.db("<DATABASE-NAME>").collection("<COLLECTION-NAME>");
// make a bunch of time series data
let timeSeriesData = [];
for (let i = 0; i < 5000; i++) {
const firstName = faker.person.firstName();
const lastName = faker.person.lastName();
let newDay = {
timestamp_day: faker.date.past(),
cat: faker.lorem.word(),
owner: {
email: faker.internet.email({firstName, lastName}),
firstName,
lastName,
},
events: [],
};
for (let j = 0; j < randomIntFromInterval(1, 6); j++) {
let newEvent = {
timestamp_event: faker.date.past(),
weight: randomIntFromInterval(14,16),
}
newDay.events.push(newEvent);
}
timeSeriesData.push(newDay);
}
await collection.insertMany(timeSeriesData);
console.log("Database seeded with synthetic data! :)");
} catch (err) {
console.log(err.stack);
}
}
seedDB();

例如,您的代码可能包含以下行,其中指定名为 synthetic-data-db 的数据库和名为 synthetic-data-collection 的集合:

const collection = client.db("synthetic-data-db").collection("synthetic-data-collection");

这段代码创建了一个关于猫的时间序列集合,将以下字段添加到每个文档中,并使用来自 faker.js 的合成数据填充这些字段:

  • timestamp_day

  • cat

  • owner.email

  • owner.firstName

  • owner.lastName

  • events

您可以将代码中的字段和值替换为与您的数据一致的字段和值。了解有关 falser.js 中可用字段的更多信息 ,请参阅 Faker API 参考文档。

3

在终端中运行以下代码以运行您的应用:

node myapp.js

应用生成 5,000 个文档,这些文档反映 myapp.js 中的数据模式。

运行此代码后,您可以按 CTRL + C 退出正在运行的应用程序。

4
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示该页,请从导航栏的 Projects(项目)菜单中选择所需的项目。

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

5
  1. 单击集群的名称。

  2. 单击 Collections 标签页。

6

展开您创建的数据库的名称,然后单击您创建的集合的名称。随即会显示您的合成数据。

← 样本天气数据集

在此页面上