我在Doctrine ODM中映射关系时遇到问题,因为他们没有使用_id字段。我目前正在使用Doctrine Mongo ODM构建一个symfony应用程序。该应用程序是在遗留的Mongo架构之上构建的(数据库已经在生产中),我无法更改该架构。
在当前架构中,每个文档中的something_id字段是自动生成的,并且这些字段用作关系。举一个后>评论的例子:
//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字段引用帖子文档,而不是_id或dbref。
我不知道为什么它是以这种方式构建的,而不是使用_id或dbref,但我无法改变它。
我一直试图在学说中映射这个。我似乎无法做到这一点,似乎无法在文档中看到有关它的任何内容。我曾经想过一个简单的'参考文献会如下所示,但它似乎不起作用:
/**
* @MongoDB\ReferenceMany(
* targetDocument="Comment",
* mappedBy="postId",
* simple=true)
*/
protected $comments = array();
有可能做我想做的事吗?即基于非_id字段建立关系?
提前致谢