为什么MongoID会生成不同的值?

时间:2012-10-20 14:21:51

标签: php mongodb doctrine doctrine-odm

我有一个带有用户表的关系数据库,并且有用户ID等。但是评论系统存储在Mongo中并且

$author = new Author();
$userID = 1;
$author->setId( new \MongoId( $userID ) ); <--- different ID generated everytime

$discussion = new Discussion();
             $discussion->setCreatedAt(new \DateTime());
             $discussion->setAuthor($author);

每次生成的ID都不同,因此我的值为5082a694253b4a1201000000,5082a55e253b4a1f05000000。

如何与用户ID相关联,例如用户ID 1?或者应该忘记全新的MongoID业务,只将用户ID存储在文档中?

1 个答案:

答案 0 :(得分:3)

来自documentation

  

public MongoId :: __ construct([string $ id = NULL])

     

$ ID:   用作id的字符串。必须是24个十六进制字符。如果将无效字符串传递给此构造函数,构造函数将忽略它并创建新的id值。

这就是为什么,即使你给了MongoId一个id,它也不适合 24个十六进制字符。所以MongoId忽略它并生成一个新的。

我认为你只需要按原样定义UserId:

$author = new Author();
$author->setUserId($userID);