使用 riak 键删除地图

Delete Map with key in riak

我正在使用 riak php 客户端并且有数据类型映射。我想通过 itemid 键删除整个地图。这是我的代码

        $location = new Location($itemID, $this->itemBucket);
        $map = (new \Command\Builder\FetchMap($this->riak))
        ->atLocation($location)
        ->build()
        ->execute()->getMap();

        (new \Command\Builder\UpdateMap($this->riak))
        ->removeMap($itemID)
        ->atLocation($location)
        ->withContext($map->getContext())
        ->build()
        ->execute();

但这不起作用。

我认为您混淆了包含地图对象的 KV 键和包含嵌套地图的地图键。

此位置将引用 "http://riaknode:8098/buckets/$this->itemBucket/keys/$itemID"

    $location = new Location($itemID, $this->itemBucket);

这会检索上面bucket/key

包含的mapt对象
    $map = (new \Command\Builder\FetchMap($this->riak))
    ->atLocation($location)
    ->build()
    ->execute()->getMap();

这会尝试从返回的地图对象

中删除具有键 $itemID 的元素
    (new \Command\Builder\UpdateMap($this->riak))
    ->removeMap($itemID)
    ->atLocation($location)
    ->withContext($map->getContext())
    ->build()
    ->execute();

如果您想删除存储在 bucket/key 下的整个地图,您可能需要使用 \Command\Builder\DeleteObject