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

标签 mongodb symfony doctrine-orm doctrine-odm

我有一个进程运行一个增量映射缩减到一个集合,我在这个集合中查看不同时间段的指标 - 按 id(s) 和日期分组。所以我的输出集合本质上有一个复合 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 处理有任何意见,这是否受支持?

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

最佳答案

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

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

关于mongodb - Doctrine2 ODM - 对象(或嵌入式文档)作为_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322842/

相关文章:

java - 当文档不在工作集中时,使用 upsert 和唯一索引原子性进行 MongoDB 更新

symfony - Heroku 可信代理

forms - Symfony 2.2 - 在开发环境中登录后重定向错误

Symfony : how to set SSL parameters in Doctrine DBAL configuration (YAML)?

php - Doctrine2 是否应用过滤器来删除语句

email - mongodb查询持续运行

mongodb - 使用 Mongoose 找不到按 ObjectId 搜索的文档

windows下的Mongodb安装路径

php - 用户的 Ratchet 存储连接和在服务器实异常(exception)发送消息

php - 如何在没有任何实体的情况下测试学说 EventListener/Subscriber