生成测试数据

本教程介绍如何快速生成测试数据,用于你对MongoDB的基本操作进行测试。

用一个循环插入多个文档

在mongo命令行下,你能用javascript为一个新的集合或已存在的集合循环添加多个文档。

1.在mongo命令行,用循环向testData集合中插入多个文档,如查testData不存在,MongoDB隐式

创建这个集合。

for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )

2.有find()查询这个集合.

db.testData.find()

mongo命令行下一次显示20个文档。每个ObjectId的值都是不同的。

{ "_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 }

find()返回一个游标。迭代游标返回更多的文档。直到显示完所有的文档:

{ "_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函数。用这个函数生成上面的数据。

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());

}

insertData()有三个参数,分别是数据库名,集合名(不存在会隐式创建),测试数据的数目

。函数创建的每个文档带一个x的字段,x字段的值为自增长的整数。

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

把那个函数储为.mongorc.js的文件。命令行在每次你启用一个新会话时加载这个函数。

  例如:
  为insertData指定数据库名,集合名,文档数目作为它的三个参数
  insertData("test","testData",400)

  这个操作向testData集合中插入400个文档.如果数据库名和集合名不存在,MongoDB在插入数据前自动创建它们。

京ICP备14008139号-1