2016-06-28 5 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'; 
} 

Я знаю строку кода, что это неправильно (синтаксис мудрый я угадал) это линия, которая делает the ...->update()

Если я прокомментирую это, я делаю это для эха.

Что я пытаюсь сделать, это сохранить все user ids внутри массива like, так как вы видите, что один из сообщений имеет пустой массив, вот как я планирую начать все сообщения.

Я запутался, почему этот код не работает, я в значительной степени скопировали их прямо отсюда

EDIT:

Чтобы добавить, мне очень нравится то, что выше пост говорит об этом не позволяя ему создавать дубликаты при использовании $addToSet. Поскольку пользователю не должно нравиться сообщение более одного раза, никогда не будет времени, когда идентификатор должен быть более одного раза

ответ

0

Похоже, что весь мой код был действительно правильным, за исключением некоторого отказа понимать синтаксис php.

У меня создалось впечатление, что создание переменной коллекции за пределами функции было глобальным. Оказалось, что я не хочу, чтобы я вызывал коллекцию внутри этой функции, поэтому, удалив функцию, она была исправлена.

Смежные вопросы