生成合成数据
您可以生成与实际数据模式一致的合成数据。合成数据对于测试和开发环境非常有用。
本教程连接到 Atlas 集群,并使用 Node.js 和 faker.js 生成合成数据 。要了解更多信息,请参阅 FakerJavaScriptDocs 。
先决条件
要使用本教程中的步骤创建合成数据,您必须:
创建要向其中加载数据的 Atlas 集群。要了解详情,请参阅创建集群。
安装 falser.js:
npm install --save-dev @faker-js/faker
步骤
按照以下步骤在集群中生成合成数据:
创建 Node.js 应用。
运行以下命令以创建并导航到该应用的目录:
mkdir syntheticdata cd syntheticdata 运行以下命令以初始化项目并将其链接到
npm
。npm init 按
Enter
接受除entry point: (index.js)
之外的所有默认值。 当终端返回entry point: (index.js)
时,输入以下文本并按Enter
:myapp.js 然后接受所有默认值,并在出现提示时输入
Yes
。运行以下命令来安装 Web 应用程序框架
express
:npm install express --save 在您创建的目录中,创建一个名为
myapp.js
的文件。
添加代码以生成合成数据。
在 myapp.js
文件中,添加以下代码。将以下占位符值替换为您的值,并保存文件的内容:
<YOUR-ATLAS-URI>
: 集群的连接string Atlas。要了解如何查找连接string ,请参阅查找MongoDB Atlas连接string 。<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 参考文档。
在 AtlasClusters 中,转到项目的 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。
此时会显示“集群”页面。
转到Collections 页面。
单击集群的对应 Browse Collections 按钮。
显示数据浏览器。