独特的指数与学说mongodb odm

时间:2011-11-01 10:22:38

标签: mongodb doctrine doctrine-odm

我正在为我的网站制作注册系统,并希望使用相同的电子邮件地址防止重复注册。

用户类的声明如下所示:

/**
 * @Document
 */
class User extends BaseEntity
{
    private 
    /**
     * @Id
     */
    $id,

    /**
     * @String @Index(unique=true)
     */    
    $email
;
}

但每当我使用相同的电子邮件保存用户时,不会引发任何异常,我会得到重复。

我找到了我需要做的事情$ documentManager-> flush(array('safe'=> true));但这没有用。

我如何实现我的需要?感谢

1 个答案:

答案 0 :(得分:5)

我有类似的问题。您可以通过在mongo控制台中键入以下内容来查看Doctrine创建的索引:

db.system.indexes.find()

我必须直接在mongo中创建我的索引these instructions.之后不会创建重复项。

然而,Symfony2 / Doctrine似乎没有抛出任何异常,插入只是无声地失败。如果您直接在控制台中执行此操作,Mongodb会提醒您插入失败。

- 编辑:根据原始帖子将array('safe'=>true)用作flush()的参数时,抛出异常