mongodb,批量更新 直接根据身份证号设置性别和年龄


db.getCollection('report').find({sex:{$exists:false}}).forEach(
   function(item){
       if(item.idcard){
           var idcard = item.idcard;
           var year = parseInt(idcard.substr(6, 4));
           var age = new Date().getFullYear() - year;
            // 计算性别
           var sex = parseInt(idcard.substr(16, 1));
           // 第17位数字表示性别:奇数表示男性,偶数表示女性
           if (sex % 2 == 0) {
               // 女
                sex = 2;
           } else {
               // 男
                sex = 1;
           }
           //NumberInt 为强制转换为整型,避免mongo自动转成duoble类型
           db.getCollection('report').update({"_id":item._id},{"$set":{"age":NumberInt(age),"sex":NumberInt(sex)}},false,true) 
       }
       
    }
)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容