mongo php插入_id

时间:2012-05-23 23:44:31

标签: php mongodb

在将新文档插入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字段,然后插入。

3 个答案:

答案 0 :(得分:3)

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

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

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

哦,你肯定可以制作自己的ObjectIds(与此处的其他答案相反)。

答案 1 :(得分:0)

安全已被弃用,以备将来使用。要确保使用正确的命令,请使用写入关注'w'。

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

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

答案 2 :(得分:-3)

您自己无法create MongoDB object个ID。因此,有两种方法可以将文档插入集合中:

  • 让MongoDB创建ID(安全!)
  • 自己选择ID,它可以是除数组之外的任何内容,它必须是唯一的。

参考:Object IDs

我从未使用PHP和MongoDB的组合,但尝试简单地将字符串分配给_id字段。