带有_id的 MONGO PHP 插入


mongo php insert with _id

在将新文档插入我的 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字段分配一个字符串。