2016-06-28 47 views
0

我在MongoDB的一些文件看起來像這樣PHP的錯誤嘗試更新的MongoDB陣列

{ "_id" : ObjectId("576f46ca6803fab30e7b23c8"), 
    "username" : "Dallas", 
    "likes" : [ "576f46ca6803fab30e7b23c8", "576f4c446803faae0e7b23c9" ]} 

{ "_id" : ObjectId("576f46ca6803fab31e7b23c8"), 
    "username" : "Dallas", 
    "likes" : [ ]} 

<?php 

$m = new MongoClient(); 
$db = $m->testing; 
$collection = $db->testCollection; 

addLike(); 

//Add likes 
function addLike() 
{ 

$id = new MongoId("576f46ca6803fab30e7b23c8"); 

$collection->update(array('_id' => $id),array('$addToSet' => array('likes' => '4d0b9c7a8b012fe287547157'))); 

echo 'addLike seemed to work'; 
} 

我知道的代碼行是錯誤的(語法明智我猜)是做線...->update()

如果我評論這一點,我把它作爲回聲。

我想要做的是將所有user ids存儲在喜歡的數組中,因爲你看到其中一個帖子有一個空數組,這就是我計劃開始所有帖子的方式。

我很困惑,爲什麼這個代碼不工作,我幾乎直接從這裏複製它

編輯:

要添加,我真的很喜歡上面的帖子說一下吧不允許在使用$addToSet時進行復制。由於用戶不可能多次喜歡某個帖子,因此從來沒有一次該ID應該出現在一次以上

回答

0

看來我所有的代碼實際上都是正確的,除了某些失敗理解PHP的語法。

我的印象是,在函數之外創建一個集合變量是全局的,事實證明它不希望我在該函數中調用集合,以便刪除它修復的函數。