Элемент массива MongoDB из коллекции

У меня есть объект mongodb следующим образом:

array ( '_id' => new MongoId("4cc97fb0247ae8747ec5fefb"), 'posts' => array ( 0 => array ( 'comment' => 'Eamorr', 'fromUname' => 'Eamorr', 'time' => 1288273840, 'UTC' => '2010-10-28T14:50:40+01:00', 'ip' => '127.0.0.1', 'id' => '123lasdfiqwoei28asdf', ), 1 => array ( 'comment' => 'Hello', 'fromUname' => 'Eamorr', 'time' => 1288277023, 'UTC' => '2010-10-28T15:43:43+01:00', 'ip' => '127.0.0.1', 'id' => 'qopqwier982389qwfa', ), 2 => array ( 'comment' => 'Hello', 'fromUname' => 'Anonymous', 'time' => 1288283506, 'UTC' => '2010-10-28T17:31:46+01:00', 'ip' => '127.0.0.1', 'id' => 'ioqwoeias892398wrf', ), ///// //Want to remove element 3: ///// 3 => array ( 'comment' => 'asdfasadf', 'fromUname' => 'Anonymous', 'time' => 1288283864, 'UTC' => '2010-10-28T17:37:44+01:00', 'ip' => '127.0.0.1', 'id' => 'wwwwwiasdfn234oiasf', ), 4 => array ( 'comment' => 'asdfasdfasdf', 'fromUname' => 'Anonymous', 'time' => 1288284076, 'UTC' => '2010-10-28T17:41:16+01:00', 'ip' => '127.0.0.1', 'id' => '290qwefoiqweproiqwerpq', ), 5 => array ( 'comment' => 'ASDF', 'fromUname' => 'Eamorr', 'time' => 1288284331, 'UTC' => '2010-10-28T17:45:31+01:00', 'ip' => '127.0.0.1', 'id' => 'eioqw8923892hasdf', ), 6 => array ( 'comment' => 'ASDF2', 'fromUname' => 'Eamorr', 'time' => 1288284370, 'UTC' => '2010-10-28T17:46:10+01:00', 'ip' => '127.0.0.1', 'id' => '23oaiofsaij234', ), ), 'uname' => 'Eamorr', ) 

Теперь я пишу код PHP для удаления сообщений [x]. Я пытаюсь использовать $ pull для удаления элемента массива.

У меня есть 'id' 'wwwwwiasdfn234oiasf' (элемент массива 3), и я хочу удалить весь этот массив, оставив всего 6 элементов в массиве 'posts'.

Я пробовал поиск в Интернете и смотрел документацию безрезультатно … Я все еще не могу получить поддержку синтаксиса mongodb.

Я делаю все это на PHP, но на любом языке я смогу сделать перевод.

Спасибо заранее,

Решение (в PHP):

 $uname=whatever $id=whatever $mongo=new Mongo(); $walls=$mongo->people->walls; $walls->update(array('uname'=>$uname),array('$pull'=>array('posts'=>array('id'=>$id)))); , $uname=whatever $id=whatever $mongo=new Mongo(); $walls=$mongo->people->walls; $walls->update(array('uname'=>$uname),array('$pull'=>array('posts'=>array('id'=>$id)))); 

Вот как это сделать, используя оболочку MongoDB. Вы должны перевести его на PHP.

Операция pull состоит из модификатора $pull , селектора полей и выражения значения .

 { $pull: { fieldSelector: valueExpression } } 

В вашем случае поле селектор – это posts , так как это массив, который вы хотите обновить. Выражение значения на простом английском языке

где id сообщения равен «wwwwwiasdfn234oiasf»

Это означает { id: "wwwwwiasdfn234oiasf" } . Если мы объединим все это, вы получите следующий оператор $pull , который удалит нужный элемент из массива:

 { $pull: { posts: { id: "wwwwwiasdfn234oiasf" } } }