在将新文档插入Mongo集合时,我无法分配自己的_id
值。这是我的PHP:
$user = array(
'_id'=> new MongoId("4f626fdf1771a8e71a000000"),
'name'=> 'John Smith'
)
try {
if($col->insert($user)){
echo 'INSERTED';
}
} catch(MongoCursorException $e) {
echo "ERROR: ".$e;
}
这不会显示错误,但也不会将项目插入集合中。但是我可以将一个字符串变量而不是MongoId类型分配给_id
字段,然后插入。
答案 0 :(得分:3)
默认情况下,MongoDB驱动程序在所谓的“不安全模式”下运行命令,当它发出请求并且不检查错误时。因此,如果出现重复的密钥错误,您将无法知道。
尝试在安全模式下运行插件,如下所示:
$col->insert($user, array("safe" => true));
哦,你肯定可以制作自己的ObjectIds(与此处的其他答案相反)。
答案 1 :(得分:0)
安全已被弃用,以备将来使用。要确保使用正确的命令,请使用写入关注'w'。
$ col-> insert($ user,array('w'=> true))
答案 2 :(得分:-3)
您自己无法create MongoDB object个ID。因此,有两种方法可以将文档插入集合中:
参考:Object IDs
我从未使用PHP和MongoDB的组合,但尝试简单地将字符串分配给_id
字段。