mongodb的位置运算符$无法在php中运行

时间:2012-03-13 13:43:46

标签: mongodb php-5.3

{
"_id": ObjectId("4f5596973c9059fc05000000"),
"array_to_be_used": {
"0": "4f548df23c9059f406000024",
"1": "4f548df23c9059f406000032",
"2": "4f548df23c9059f406000004",
"3": "4f548df23c9059f406000035" 
}

}

$id ='4f5596973c9059fc05000000';
$collection->update(array('_id' => new MongoId($id)),array('$unset' => array('array_to_be_used.$'=>'4f548df23c9059f406000004'))    );

假设我想删除'4f548df23c9059f406000004'而不知道它的数字索引,所以我使用上面提到的代码但不能正常工作。请帮帮我。

2 个答案:

答案 0 :(得分:1)

位置运算符用于数组,而不是对象。

因为你的数据是一个对象而不是一个数组(从数组键看起来像是一个错误),你的“最佳”选项可能是读取对象,确定键并取消设置。

$id ='4f5596973c9059fc05000000';
$row = $collection->findOne(array('_id' => new MongoId($id)));
$i = array_search('4f548df23c9059f406000004', $row['array_to_be_used']);
if ($i !== false) {
    $collection->update(
        array('_id' => new MongoId($id)),
        array('$unset' => array('array_to_be_used.' . $i => true))
    );
}

答案 1 :(得分:0)

您应该使用$pull修饰符。

MongoDB documention about $pull