在将新文档插入我的 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
字段,然后插入。
默认情况下,MongoDB驱动程序在所谓的"不安全模式"下运行命令,当它对请求执行触发并忘记并且不检查错误时。因此,如果存在重复键错误,您将不知道。
尝试在安全模式下运行插入,如下所示:
$col->insert($user, array("safe" => true));
哦,你肯定可以制作自己的ObjectId(与这里的其他答案相反)。
Safe 已从将来的使用中弃用。 要确保您使用的是正确的命令,请使用写关注点"w"。
$col->insert($user, array('w'=>true))
看这里:http://php.net/manual/en/mongocollection.insert.php
您无法自行创建 MongoDB 对象 ID。因此,有两种方法可以将文档插入集合中:
- 让MongoDB创建ID(安全!
- 自己选择ID,它可以是数组以外的任何内容,并且必须是唯一的。
参考:对象 ID
我从未使用过PHP和MongoDB的组合,而是尝试简单地为_id
字段分配一个字符串。