Doctrine2 ODM - 作为_id的对象(或嵌入文档)

时间:2012-07-04 05:20:53

标签: mongodb symfony doctrine-orm doctrine-odm

我有一个运行增量地图的流程缩减到一个集合,我在这里查看不同时间段的指标 - 按ID和日期分组。所以我的输出集合实际上有一个复合id来处理分组。

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

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

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

然而,这不起作用。我还尝试使用@Id设置strategy=NONE,我可以使用QueryBuilder来获取行,但在尝试保存我的Document类时会出错。我试图阻止网站ID和日期(67-134137916)并允许我使用DocumentManager,但我无法按日期范围进行查询。

任何人都有关于如何在Doctrine2的ODM中处理对象作为id的任何输入,是否支持?

修改 删除了复合主键标记 - 问题确实与将对象用作主键有关。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您问题的核心:Composite Primary Keys tutorial

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