2

我有一个运行增量地图的进程,减少到一个集合,我在其中查看不同时间段的指标 - 按 id(s) 和日期分组。所以我的输出集合基本上有一个复合 id 来处理分组。

{
    "_id" : {
        "site" : 67,
        "dt" : ISODate("2012-07-03T00:00:00Z")
    },
    "value" : {
        // Metrics here
    }
}

我希望能够使用 ODM 在我的 Symfony2 应用程序中从该集合中获取结果 - 但在该_id字段中遇到问题。我以为我可以将其指定为@Idand @embedOne

   /**
    * @MongoDB\Id
    * @MongoDB\EmbedOne(targetDocument="reportId")
    */
   protected $id;

但是,这不起作用。我还尝试使用 进行设置@Idstrategy=NONE并且可以使用 QueryBuilder 来获取行,但是在尝试对 Document 类进行水合时会出错。我尝试使用站点 ID 和日期 ( 67-134137916),它允许我使用 DocumentManager,但我失去了按日期范围查询的能力。

任何人都对如何在 Doctrine2 的 ODM 中将对象作为 id 处理有任何意见,这是否支持?

编辑: 删除复合主键标签 - 问题确实与使用对象作为主键有关。

4

1 回答 1

1

我不确定这是否是您问题的核心:复合主键教程

看起来你只能有整数和字符串的复合主键(所以没有日期?)。

于 2012-07-11T17:47:57.677 回答