1

_id将新文档插入我的 Mongo 集合时,我无法分配自己的值。这是我的PHP:

$user = array(
'_id'=> new MongoId("4f626fdf1771a8e71a000000"),
'name'=> 'John Smith'
)
try {
    if($col->insert($user)){
        echo 'INSERTED';
    }
} catch(MongoCursorException $e) {
    echo "ERROR: ".$e;
}

这不会显示错误,但也不会将项目插入到集合中。但是,我可以为该_id字段分配一个字符串变量而不是 MongoId 类型,然后它会插入。

4

3 回答 3

3

默认情况下,MongoDB 驱动程序在所谓的“不安全模式”下运行命令,当它对请求执行“即发即弃”并且不检查错误时。因此,如果存在重复键错误,您将不知道。

尝试在安全模式下运行插入,如下所示:

$col->insert($user, array("safe" => true));

哦,您当然可以制作自己的 ObjectId(与此处的其他答案相反)。

于 2012-05-24T07:08:05.930 回答
0

Safe 已被弃用,不再使用。为确保您使用正确的命令,请使用写入关注点“w”。

$col->insert($user, array('w'=>true))

见这里: http: //php.net/manual/en/mongocollection.insert.php

于 2013-06-03T15:02:27.497 回答
-3

您不能自行创建 MongoDB 对象ID。因此,有两种方法可以将文档插入到集合中:

  • 让 MongoDB 创建 ID(安全!)
  • 自行选择 ID,它可以是数组以外的任何东西,并且它必须是唯一的。

参考:对象 ID

我从未使用过 PHP 和 MongoDB 的组合,但尝试简单地为该_id字段分配一个字符串。

于 2012-05-23T23:52:07.850 回答