mongodb之javascript shell脚本处理数据

该JavaScript代码在MongoDBshell中执行,用于查询集合A中的文档,并根据custId的长度从集合B和C中查找关联数据。找到的数据用于更新集合A的字段,包括agentId,registerTime,custPhoneNumber,agentPhoneNumber和agentName。处理了custId数据不规范的情况,确保正确查询。
摘要由CSDN通过智能技术生成

需求:mongodb里面有一个集合A,我现在需要往集合A里面新增几个字段,这几个字段需要从集合B,和集合C里面通过外键关联查询出来后赋值到集合A里面。
javascript代码:

var dataList = db.custCardMo_cf.find({});
dataList.forEach(function(acr){
  var agentId =null;
  var registerTime =null;
  var custPhoneNumber =null;
  var agentPhoneNumber =null;
  var agentName =null;
  if(acr.custId!=null){
      var num=acr.custId.length;
      var custObj =null;
      if(num>24){         
          custObj=db.custMo.findOne({"_id":acr.custId});
      }else{
          custObj=db.custMo.findOne({"_id":ObjectId(acr.custId)});
      }
      if(custObj !=null){
          custPhoneNumber=custObj.phoneNumber;  
          registerTime=custObj.createTime;
          agentId=custObj.agentId;
          agentName=custObj.agentName;
      }
      if(agentId!=null){
         var num2= agentId.length;
         var agentObj =null;
         if(num2 >24){           
            agentObj= db.agentMo.findOne({"_id":agentId});
         }else{
           agentObj= db.agentMo.findOne({"_id":ObjectId(agentId)});   
         }
         if(agentObj!=null){
             agentPhoneNumber = agentObj.phoneNumber;
         }
      }
     printjson(acr.custId);
      db.custCardMo_cf.update({ "_id": acr._id }, {"$set": { agentId:agentId,
          registerTime:registerTime,
          custPhoneNumber:custPhoneNumber,
          agentPhoneNumber:agentPhoneNumber,
          agentName:agentName
          }});
  }
 }
);

上面的shell脚本简单解释一下,因为A集合的custId 数据不规范,有的custId是24位的,有的32位的,所以根据id的长度不同,查询方式不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值