0

私は自分のデータベースにこのオブジェクトを持っています。

    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)

[フィード] からアイテム [0] だけを取得したい。私はこのコードを使用しますが、機能しません:

$usersCollection->update(array("username" => "foouser"), array('$pull'=> array('folder'=>array('root'=>array('feeds'=>array('feedID'=>$id))))));

$pull の代わりにこの $unset を使用すると、[folder] がいっぱいなくなります。

4

1 に答える 1

1

配列要素の完全な値を指定する必要があります。また、 「folder.root.feeds」を使用する必要があります。これは、プル元のフィールドであるためです。folder影響を受けないように配列要素を内部に引き出したくありません。

シェルでは、次を実行します。

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',
            )
        )
    )
);
于 2012-06-05T12:02:45.813 に答える