Вопрос в том, можно ли использовать «$ slice» с помощью update() и $ push в mongodb.
Я уже пробовал это: (с и без приведения к (объекта)
$db->collection->update(
array('_id' => new MongoId($id)),
(object)array('$push' =>
array('thumbs' => array(
'$each' => $items,
'$slice' => -5
))));
Но единственное, что происходит в Монго добавляя весь второй массив в обновлении() к сборнику Так я получаю
.thumbs: [ { "$each" : ...
заранее спасибо!
Почему вы выбрали параметр update как объект? – Sammaye
Поскольку php не может различать объекты и массивы в коллекции. [] = объект и {} = массив. Но даже если я его не брошу, это не сработает. – Zanders
Это не имеет значения с драйвером PHP, dicts и массивы аналогичны (как вы сказали), и PHP-драйвер может кодироваться в правильную нотацию независимо. В чем версия MongoDB? Оператор '$ slice' является очень новым (v2.4.3), поэтому кажется, что это то, что происходит, MongoDB читает это как обычный документ, потому что он не понимает операторов, которые вы ввели – Sammaye