鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ php增刪mongdb字段

php增刪mongdb字段

我司的點(diǎn)贊功能

mongodb結(jié)構(gòu)如下

{
    "_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)){ //如果已經(jīng)點(diǎn)贊

            $data = $talk->update($info,array('$unset'=>array("likelist.$userid"=>1)),array('upsert'=>true));

        }else{ //如果沒(méi)點(diǎn)贊
            $data = $talk->update($info,array('$set'=>array("likelist.$userid"=>$userinfo)),array('upsert'=>true));
        }

其中有一個(gè)問(wèn)題就是當(dāng)我點(diǎn)贊后又取消點(diǎn)贊,likelist為空時(shí),再進(jìn)行點(diǎn)贊,就會(huì)報(bào)一個(gè)這個(gè)錯(cuò)誤

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

雖然也有笨方法解決
如果likelist為空 就刪除這個(gè)字段
但是總覺(jué)得會(huì)有更好方法解決他

ps:有好一點(diǎn)的php操作mongodb的文檔嗎?到處翻博客,博客上寫的又不是很全 ,很蛋疼

回答
編輯回答
久礙你

https://docs.mongodb.com/manu...
最后發(fā)現(xiàn)php操作mongodb其實(shí)就是對(duì)mongodb操作的一種映射,可以直接去看mongodb的官方文檔,然后按照規(guī)則傳參

2017年11月18日 03:47