mongodb$pull无法运行php

mongodb$pull无法运行php,php,mongodb,pull,unset,Php,Mongodb,Pull,Unset,我的数据库中有这个对象 Array( [_id] => MongoId Object ( [$id] => 4fcdb3b8749d786c03000002 ) [email] => foo@bar.com [folder] => Array ( [root] => Array ( [feeds] => Array

我的数据库中有这个对象

    Array(
[_id] => MongoId Object
    (
        [$id] => 4fcdb3b8749d786c03000002
    )

[email] => foo@bar.com
[folder] => Array
    (
        [root] => Array
            (
                [feeds] => Array
                    (
                        [0] => Array
                            (
                                [feedID] => MongoId Object
                                    (
                                        [$id] => 4fcdaa9e749d786c03000001
                                    )

                                [title] => title.com
                            )

                    )

                [title] => root
            )

    )


[status] => 1
[username] => foouser)
我只想从[feeds]中提取项[0]。 我使用此代码,但它不起作用:

$usersCollection->update(array("username" => "foouser"), array('$pull'=> array('folder'=>array('root'=>array('feeds'=>array('feedID'=>$id))))));
当我使用这个$unset而不是$pull时,[folder]的full将消失。

您需要指定数组元素的full值。您还必须使用“folder.root.feeds”,因为这是您要从中提取的字段。您不想使
文件夹中的数组元素不受影响

在shell上,您可以运行:

db.so.update(
    { 'username' : 'foouser' },
    { $pull:
        { 'folder.root.feeds' :
            {
                "feedId" : ObjectId("4fcdaa9e749d786c03000001"),
                "title" : "title.com"
            }
        }
    }
);
在PHP中,这将转化为:

$c->update(
    array( 'username' => 'foouser' ),
    array( '$pull' =>
        array( 'folder.root.feeds' =>
            array(
                'feedId' => new MongoId('4fcdaa9e749d786c03000001'),
                'title' => 'title.com',
            )
        )
    )
);

只是猜测一下,但是您的
$id
是字符串还是一个合适的MongoID?i、 e.
$real_id=new MongoId($id”)??这是个蒙哥人,没问题。我也不能用它来拉根:$userscolection->update(数组(“username”=>“fooouser”)、数组(“$pull”=>array('folder'=>'root'));对我有用:我希望你有一个最新版本的MongoDB?只要复制你的代码就行了。我想问题是我的插入。另一个问题,如果我不知道“根”,我怎么能使用$呢?文件夹。$.feed?