[英]MongoDB pull array element from a collection
我有一個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),我想刪除整個數組元素,只留下'posts'數組中的6個元素。
我試過谷歌搜索和查找文檔無濟於事...我仍然無法得到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))));
以下是使用MongoDB shell的方法。 您應該能夠將其翻譯成PHP。
pull操作由$pull
修飾符, 字段選擇器和值表達式組成 。
{ $pull: { fieldSelector: valueExpression } }
在您的情況下,字段選擇器是posts
,因為那是您要更新的數組。 用簡單的英語表示的值表達式是
帖子的
id
等於“wwwwwiasdfn234oiasf”
這轉換為{ id: "wwwwwiasdfn234oiasf" }
。 如果我們將所有這些結合起來,你將獲得以下$pull
語句,它將從數組中刪除所需的項:
{ $pull: { posts: { id: "wwwwwiasdfn234oiasf" } } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.