我正在嘗試使用PHP PECL擴展MongoDB,但我很難讓某個更新查詢工作。我已經在SO上尋找答案,但運氣不佳。
我已經創建了一個基本的集合:
$m = new Mongo;
$collection = $m->testdb->testcollection;
$collection->insert(array(
0, 1, 1, 2, 3, 5
));
使用findOne
和var_dump
記錄顯示如下:
array
'_id' =>
object(MongoId)[6]
public '$id' => string '4f3bde65a1f7a0315b000000' (length=24)
0 => int 0
1 => int 1
2 => int 1
3 => int 2
4 => int 3
5 => int 5
問題是當我想用$set
更新。我立足於PHP手冊朝SQL to Mongo Cheat Sheet底部顯示
在這裏,我想更新場0
看重映射我的查詢100
$obj = $collection->findOne();
$collection->update(
array('_id' => $obj['_id']),
array('$set' => array(0 => 100))
);
重新取的記錄顯示,它遺體不變的。
我做了,我懷疑是否是自己做錯事與_id
,但是下面的更新查詢確實工作,儘管有新的值替換整個記錄,而不是簡單地更新一個字段。
$collection->update(
array('_id' => $obj['_id']),
array(0 => 100)
);
對象轉儲:
array
'_id' =>
object(MongoId)[7]
public '$id' => string '4f3bde65a1f7a0315b000000' (length=24)
0 => int 100
可有人請指出我在做什麼錯誤,以及如何正確使用$set
。我確信這很明顯,我只需要再看一眼。
非常感謝。
做這項工作:'陣列( '$設置'=>陣列(1 => 100))'? – 2012-02-15 20:56:51
@yi_H:**有**功能。字段'1'已更新,爲什麼它不適用於字段'0'? – Leigh 2012-02-16 09:12:52