php增删mongdb字段

我司的点赞功能

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的文档吗?到处翻博客,博客上写的又不是很全 ,很蛋疼

阅读 2.1k
1 个回答

https://docs.mongodb.com/manu...
最后发现php操作mongodb其实就是对mongodb操作的一种映射,可以直接去看mongodb的官方文档,然后按照规则传参

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题