账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php增删mongdb字段
    22
    0

    我司的点赞功能

    mongodb结构如下

    {
        "_id" : ObjectId("5a38c409fcd12baa083d6869"),
        "uid" : "1090692",
        "username" : "vvvv",
        "image" : "style/default/commonImg/headgirl.gif",
        "time" : 1513669641,
        "content" : "12312321",
        "likelist" : {
            "1090339" : {
                "uid" : "1090339",
                "username" : "xxx",
                "image" : "group1/M00/00/D9/wKgAE1oTkTKAdTPNAAEQcPzKoDA20.jpeg",
                "time" : 1513676247
            },
            "1090542" : {
                "uid" : "1090542",
                "username" : "aaa",
                "image" : "group1/M00/00/D8/wKgADVoOVaaAd0SvAAA8Kg_PvWI97.jpeg",
                "time" : 1513676255
            }
        }
    }

    php代码如下

            if (in_array($this->user['uid'],$keys)){ //如果已经点赞
    
                $data = $talk->update($info,array('$unset'=>array("likelist.$userid"=>1)),array('upsert'=>true));
    
            }else{ //如果没点赞
                $data = $talk->update($info,array('$set'=>array("likelist.$userid"=>$userinfo)),array('upsert'=>true));
            }

    其中有一个问题就是当我点赞后又取消点赞,likelist为空时,再进行点赞,就会报一个这个错误

    E11000 duplicate key error collection: Mdaxue.Talks index: _id_ dup key: { : ObjectId('5a38c409fcd12baa083d6869') }

    虽然也有笨方法解决
    如果likelist为空 就删除这个字段
    但是总觉得会有更好方法解决他

    ps:有好一点的php操作mongodb的文档吗?到处翻博客,博客上写的又不是很全 ,很蛋疼

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部