MongoDB Doctrine ODM在运行时更改文档的集合名称

时间:2013-06-27 07:45:25

标签: mongodb doctrine-odm odm

我必须为他们每天注册的用户创建集合,所以如果我有3个用户,2个在2013-03-02注册,3个在2013-03-03注册我将有2个集合

用户在没有集合的YML文件中声明

在项目中,我通过CLI导入类似这样的

      foreach($arUsers as $key=>$arUser)
  {

    $collection_name = "day_".$arUser['date'];


    $user = new User();

    /* Change the collection name to be dynamic  */
    $OdmMetaData = MeltApplication::getDocumentManager()->getClassMetaData( get_class($user) );
    $OdmMetaData->setCollection($collection_name);

    $user->setUserId($arUser['user_id']);
    $user->setEmail($arUser['email']);
    ....

    $this->getDocumentManager()->persist($user);
    $this->getDocumentManager()->flush();
  }

问题是当我查看mongoDB时,我只看到一个名为day_2013-03-03的集合“这是最后一个日期,如果我设置了MeltApplication :: getDocumentManager() - > flush();之后在第一个集合03-02中我应该保存的所有结束语句。

是否有任何选项可以将它们分开保存?

由于

2 个答案:

答案 0 :(得分:1)

$data = $odm->getClassMetadata('NameEntity');
$data->setCollection($collectionName);

这就是答案。

答案 1 :(得分:0)

唯一的解决方案是重新初始化documentManager