簡體   English   中英

MongoDB從集合中拉取數組元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM