在MongoDB中创建测试数据

时间:2016-07-01 18:41:12

标签: java mongodb

我想为MongoDB生成测试数据。大小应为200 Mb。我试过这段代码:

$("#showPrivacy").on('click',function(){
    $("#displayPrivacy").toggle();
});

// check for select clicks since first click open the select, 
// the second will be for the option...
var privacy_count_click = 0;

$('#privacy').on('click', function() {
   // if click is greater then 0 this 
   // means user clicked on one of the 2 options
   // so, let's hide the div and reset the counter
   if(privacy_count_click > 0){
         $("#displayPrivacy").hide();
         privacy_count_click = 0;
   } else {
        privacy_count_click++; 
   }
});

如何使用此尺寸精确生成数据?

5 个答案:

答案 0 :(得分:4)

我没有通过设置200 Mb大小来实现您想要实现的目标。

您可以添加逻辑检查。

  1. db.testCollection.stats() - 您可以在每次插入前检查集合的大小。

  2. Object.bsonsize(..) - 您也可以在插入之前检查文档大小,使其正好为200 MB。

  3. 此外,您还可以设置上限集合,您可以在其中通知文档数量或集合大小。

    希望这有帮助。

答案 1 :(得分:2)

我可能会做的是创建一个大小为200MB(209715200字节)的上限集合:

db.createCollection( "ssv", { capped: true, size: 209715200 } )

然后按原样插入记录。然后在for循环内间隔一段时间,检查集合是否已满(或几乎已满)。

所以在你的代码中,也许(完全伪代码):

if(i % 10 == 0) {
   if(db.ssv.stats().size >= 209715100){ //Or an arbitrary value closer to 200MB
     break;
   }
}

答案 2 :(得分:2)

为什么要将相同的数据复制100次才能生成200mb的测试数据?相反

  

1.对值进行计数,以便您可以按顺序生成数据

     

OR

     
      
  1. 使用随机函数生成随机数据
  2.   
yyyy-mm-ddThh-mm-ssZ
  

10个8字节的两个字节的字符串和10个8字节的数字=> 240B

     

240B * 873813 = 200MB

答案 3 :(得分:1)

基于Robert Udah和Somnath Muluk建议的quick dirty solution

答案 4 :(得分:1)

创建一个类型为nvarchar的字段,然后在您的示例桌面中生成一个包含200MB数据的.txt文件。然后将此字符串放入该字段。是的。