在mongo中模拟虚拟数据?

时间:2013-05-06 02:55:24

标签: ruby-on-rails mongodb

我正在使用rails种子文件,它正在生成属性设置为随机值的用户。

只需创建一千个用户即可。说我想创建10,000或100,000。这需要一整晚才能填满。

有没有办法做这种事情?

1 个答案:

答案 0 :(得分:2)

插入10k条目几乎不需要几秒钟。 您可以尝试使用mongo shell插入。以下是一个可以根据您的要求修改的小代码。

generate_random_load(50, 'test3', ['_id','user'], 4)

Mongo > db.test3.find()
{ "_id" : "uNOK", "user" : "RlZS" }
{ "_id" : "tWHy", "user" : "xzGl" }
{ "_id" : "XUwH", "user" : "vySE" }
{ "_id" : "T8k0", "user" : "JMM2" }
{ "_id" : "H6R4", "user" : "HdZF" }
.....

function generate_random_load(count, collection_name, array_keys, key_size) {
    for (var i = 0; i < count; i++) {
        var document = {};
        for (var j in array_keys) {
            document[array_keys[j]] = random_string(key_size);
        }
        getDB("test").getCollection(collection_name).insert(document);
    }
}

function random_string(len, charSet) {
    charSet = charSet ||
        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    var randomString = "";
    for (var i = 0; i < len; i++) {
        var randomPoz = Math.floor(Math.random() * charSet.length);
        randomString += charSet.substring(randomPoz, randomPoz + 1);
    }
    return randomString;
}

function getDB(db_name) {
    return db.getMongo().getDB(db_name);
}