OPTIONS
翻译或纠错本页面

生成测试数据

这篇教程描述了如何快速生成测试数据,以满足您测试基本MongoDB操作的需求。

使用一个For Loop 插入多个文档

您可以通过在 mongo 脚本中使用一个JavaScript for 循环向一个新的或者现有的集合中添加文档。

  1. mongo 脚本中,使用下面的 for 循环向 testData 集合中插入新的文档。如果``testData``集合不存在,MongoDB将隐式地创建该集合。

    for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )
    
  2. 使用find() 查询集合:

    db.testData.find()
    

    The mongo shell displays the first 20 documents in the collection. Your ObjectId values will be different:

    { "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "x" : 1 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "x" : 2 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "x" : 3 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "x" : 4 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "x" : 5 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990beb"), "x" : 6 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bec"), "x" : 7 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bed"), "x" : 8 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bee"), "x" : 9 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bef"), "x" : 10 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf0"), "x" : 11 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf1"), "x" : 12 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf2"), "x" : 13 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf3"), "x" : 14 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf4"), "x" : 15 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf5"), "x" : 16 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf6"), "x" : 17 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf7"), "x" : 18 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf8"), "x" : 19 }
    { "_id" : ObjectId("51a7dc7b2cacf40b79990bf9"), "x" : 20 }
    
  1. 方法 find() 返回一个游标。使用 mongo 脚本中的 it 操作迭代这个游标就可以返回更多文档。 mongo 脚本将会利用该游标返回下面的文档:

    { "_id" : ObjectId("51a7dce92cacf40b79990bfc"), "x" : 21 }
    { "_id" : ObjectId("51a7dce92cacf40b79990bfd"), "x" : 22 }
    { "_id" : ObjectId("51a7dce92cacf40b79990bfe"), "x" : 23 }
    { "_id" : ObjectId("51a7dce92cacf40b79990bff"), "x" : 24 }
    { "_id" : ObjectId("51a7dce92cacf40b79990c00"), "x" : 25 }
    

使用一个 mongo 脚本函数插入多个文档

您可以再您的脚本会话中创建一个JavaScript函数以生成上述的数据。这里提到的 insertData() JavaScript函数通过创建一个新的集合或者向现有集合中追加数据来创建新的数据,以用于测试或者训练。

function insertData(dbName, colName, num) {

  var col = db.getSiblingDB(dbName).getCollection(colName);

  for (i = 0; i < num; i++) {
    col.insert({x:i});
  }

  print(col.count());

}

The insertData() function takes three parameters: a database, a new or existing collection, and the number of documents to create. The function creates documents with an x field that is set to an incremented integer, as in the following example documents:

{ "_id" : ObjectId("51a4da9b292904caffcff6eb"), "x" : 0 }
{ "_id" : ObjectId("51a4da9b292904caffcff6ec"), "x" : 1 }
{ "_id" : ObjectId("51a4da9b292904caffcff6ed"), "x" : 2 }

将这个函数存储在您的 .mongorc.js 文件中, mongo 脚本将会在您每次开启一个会话时载入该函数。

示例

Specify database name, collection name, and the number of documents to insert as arguments to insertData().

insertData("test", "testData", 400)

本操作向数据库 test 中的 testData 集合插入了400个文档。如果该集合和数据库不存在,MongoDB将会在插入文档之前隐式地创建。