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