我有一个运行增量地图的进程,减少到一个集合,我在其中查看不同时间段的指标 - 按 id(s) 和日期分组。所以我的输出集合基本上有一个复合 id 来处理分组。
{
"_id" : {
"site" : 67,
"dt" : ISODate("2012-07-03T00:00:00Z")
},
"value" : {
// Metrics here
}
}
我希望能够使用 ODM 在我的 Symfony2 应用程序中从该集合中获取结果 - 但在该_id
字段中遇到问题。我以为我可以将其指定为@Id
and @embedOne
:
/**
* @MongoDB\Id
* @MongoDB\EmbedOne(targetDocument="reportId")
*/
protected $id;
但是,这不起作用。我还尝试使用 进行设置@Id
,strategy=NONE
并且可以使用 QueryBuilder 来获取行,但是在尝试对 Document 类进行水合时会出错。我尝试使用站点 ID 和日期 ( 67-134137916
),它允许我使用 DocumentManager,但我失去了按日期范围查询的能力。
任何人都对如何在 Doctrine2 的 ODM 中将对象作为 id 处理有任何意见,这是否支持?
编辑: 删除复合主键标签 - 问题确实与使用对象作为主键有关。