{
"_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'而不知道它的数字索引,所以我使用上面提到的代码但不能正常工作。请帮帮我。
答案 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
修饰符。