使用 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
我正在使用 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