Doctrine orm 使用非_id的字段的Doctrine Mongo ODM关系

Doctrine orm 使用非_id的字段的Doctrine Mongo ODM关系,doctrine-orm,doctrine,symfony,doctrine-odm,Doctrine Orm,Doctrine,Symfony,Doctrine Odm,我在Doctrine ODM中映射关系时遇到问题,因为它们没有使用_id字段。我目前正在使用Doctrine Mongo ODM构建一个symfony应用程序。该应用程序是在传统Mongo模式(数据库已经在生产中)的基础上构建的,我无法更改该模式 在当前模式中,自动生成每个文档中的something_id字段,并将其用作关系。以post->comment为例: //Post { "_id" : ObjectId("abcd1234..."), "title" : "Test ti

我在Doctrine ODM中映射关系时遇到问题,因为它们没有使用_id字段。我目前正在使用Doctrine Mongo ODM构建一个symfony应用程序。该应用程序是在传统Mongo模式(数据库已经在生产中)的基础上构建的,我无法更改该模式

在当前模式中,自动生成每个文档中的something_id字段,并将其用作关系。以post->comment为例:

//Post
{
    "_id" : ObjectId("abcd1234..."),
    "title" : "Test title 1",
    "content" : "lkjlkjlkjlkjl",
    "date_added" : NumberLong(1400000000),
    "post_id" : NumberLong(123456789012345) //this is manually generated
}
post_id字段将自动生成(并且是唯一的,并用作索引)和相应的注释:

//Comment
{
    "_id" : ObjectId("abcd1234..."),
    "title" : "Test comment 1",
    "comment" : "lkjlkjlkjlkjl",
    "date_added" : NumberLong(1400000000),
    "comment_id" : NumberLong(123456789012345), //this is manually generated
    "post_id" : NumberLong(123456789012345) //this is the 'Foreign Key'
}
在上面的示例中,注释文档通过其手动生成的post_id字段引用post文档,而不是_id或dbref

我不知道为什么它是以这种方式构建的,而不是使用_id或dbref,但我无法更改它

我一直在试图在教义中描绘这一点。我似乎做不到,也看不到文档中关于它的任何内容。我原以为一个“简单”的参考可以做到以下几点,但它似乎不起作用:

 /**
 * @MongoDB\ReferenceMany(
 *     targetDocument="Comment", 
 *     mappedBy="postId", 
 *     simple=true)
 */
protected $comments = array(); 
有可能做我正在尝试的事情吗?i、 e.是否基于非id字段建立关系


提前感谢

恐怕这是不可能的,ODM使用的是
\u id
字段,因为它们总是存在且唯一的。此外,也没有办法为引用配置“外键”。