JS创建MongoDB测试数据(二)
在之前的文章JS创建MongoDB测试数据(一)中,创建出来的数据是这样的:
{
"_id" : ObjectId("58087341a49693ca066e081f"),
"deviceId" : "1",
"phone" : "17035611635",
"plate" : "贵B1345",
"driver" : "雷榕润"
}
现在新的需求要求数据像这样存储:
{
"_id" : ObjectId("580f01da5cf0c0fe4ce62f38"),
"deviceId" : "1",
"data" : "{phone:13817414213,plate:\"贵A8834\",driver:\"孙小佳\"}"
}
注意字符串要加引号,需转义处理
修改后的代码如下:
//生成随机手机号
function getRandPhone(){
var heads = ["134","138","139","150","151","152","157","158","159","170","189"];
var phone = heads[Math.floor(Math.random()*heads.length)];
var numbers = [1,2,3,4,5,6,7,8,9];
for(var i=0; i<8; i++){
phone+=numbers[Math.floor(Math.random()*numbers.length)];
}
return phone;
}
//生成车牌号
function getRandPlate(){
//地区,用于生成车牌号
var loc = ["川","渝","贵","陕","京","沪","粤","津","赣","湘","鄂"];
//字母,用于生成车牌号
var chars = ["A","B","C","D"];
//数字,用于生成车牌号
var numbers = [1,2,3,4,5,6,7,8,9];
var plate = "";
plate += loc[Math.floor(Math.random()*loc.length)]; //第一位地区简称
plate += chars[Math.floor(Math.random()*chars.length)]; //第二位字母简称
//4位数字
for(var i=0; i<4; i++){
plate+=numbers[Math.floor(Math.random()*numbers.length)];
}
return plate;
}
//生成名字
function getRandName(){
var familyNames = ["赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈",
"褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
"何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏",
"陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章",
"云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦",
"昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳",
"酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺",
"倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常",
"乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余",
"元", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹"
];
var givenNames = ["子璇", "淼", "国栋", "夫子", "瑞堂", "甜", "敏", "尚", "国贤", "贺祥", "晨涛",
"昊轩", "易轩", "益辰", "益帆", "益冉", "瑾春", "瑾昆", "春齐", "杨", "文昊",
"东东", "雄霖", "浩晨", "熙涵", "溶溶", "冰枫", "欣欣", "宜豪", "欣慧", "建政",
"美欣", "淑慧", "文轩", "文杰", "欣源", "忠林", "榕润", "欣汝", "慧嘉", "新建",
"建林", "亦菲", "林", "冰洁", "佳欣", "涵涵", "禹辰", "淳美", "泽惠", "伟洋",
"涵越", "润丽", "翔", "淑华", "晶莹", "凌晶", "苒溪", "雨涵", "嘉怡", "佳毅",
"子辰", "佳琪", "紫轩", "瑞辰", "昕蕊", "萌", "明远", "欣宜", "泽远", "欣怡",
"佳怡", "佳惠", "晨茜", "晨璐", "运昊", "汝鑫", "淑君", "晶滢", "润莎", "榕汕",
"佳钰", "佳玉", "晓庆", "一鸣", "语晨", "添池", "添昊", "雨泽", "雅晗", "雅涵",
"清妍", "诗悦", "嘉乐", "晨涵", "天赫", "玥傲", "佳昊", "天昊", "萌萌", "若萌",
"泽民", "国强", "胜利", "小凡", "碧瑶", "书书", "京雨", "卫东", "小佳", "长江"
];
var name = familyNames[Math.floor(Math.random()*familyNames.length)];
name+=givenNames[Math.floor(Math.random()*givenNames.length)];
return name;
}
//var plate = getRandPlate();
//print(plate);
//var phone = getRandPhone();
//print(phone);
//var name = getRandName();
//print(name);
/**生成油耗
*@param base 油耗基准值
*/
function getFuelConsum(base){
var trueRange = [base-2, base+2]; //假定偏离基准不超过2
var fuelConsum = Math.random()*(trueRange[1]-trueRange[0]);
fuelConsum += trueRange[0];
return Math.round(fuelConsum*100)/100; //转成2位小数
}
/**生成设备数据
* @param devNum 设备数量
* @param groupNum 每组设备的数量,同一组设备的档案相同
* @param dataNum 每个设备的数据数量
*/
function genDeviceData(devNum,groupNum,dataNum){
use test;
for(var i=0; i