关于MongoDB批量修改不成功的问题

3 篇文章 0 订阅

今天下午修改了之前写的代码,修改完成后,发现旧bug解决了,新bug又来了、后台管理券信息点击修改券类型时,mongo中对应的类型没有变,之前还可以。下午修改代码时也没有动其中的修改方法,研究了代码发现没有问题,但就是改变不了券类型,最后没法了,请教了技术总监,我俩也没有发现问题所在之处,就逐个排查,

1:先看是否是因为券ID太长,导致mongo不能查询到所导致。(在mongo中用同样的ID进行修改可以批量修改成功)故排除

2:是否是因为PHP代码传过去的券ID 不是字符串的原因,因为mongo中如果数字太长,需要对数字进行strval() 强制类型转换。后经测试 排除

3:写日志查询逐行代码中的 变量/数组 的值是否正确。以及mongo执行语句返回的值是否正确  (经测试,一切正常)

以上三点排查都无问题,就纳闷了,难道是mongo中update语句的问题?

于是百度,mongoDB update的用法。最后恍然大悟。原先能执行修改语句成功,是因为测试的券都是单个的,要想批量修改其列的值,需要在update() 后加第三个参数 如下 

$this->mongoDbName->update($where,array('$set'=>array("recom" => $recom)),array("multiple" => true));

如果不加那么只会修改最后一个券的值,虽然只是一个参数的问题,尽管找了很长时间,但是跟技术总监一起调试bug从中也学到了不少技巧,收益匪浅;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值