2
我有一個進程運行增量映射減少到一個集合,我正在查看指標在不同的時間段 - 按ID和S分組。所以我的輸出集合本質上有一個複合ID來處理分組。Doctrine2 ODM - 對象(或嵌入式文檔)作爲_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;
但是,這是行不通的。我也嘗試使用strategy=NONE
設置@Id
,我可以使用QueryBuilder來獲取行,但在嘗試水化我的Document類時會出錯。我試圖壓制網站ID和日期(67-134137916
),它允許我使用DocumentManager,但我失去了查詢日期範圍的能力。
任何人都有關於如何在Doctrine2的ODM中處理對象作爲id的任何輸入,是否支持?
編輯: 刪除複合主鍵標籤 - 問題確實涉及到使用對象作爲主鍵。
不幸的是,這是針對ORM的,而不是ODM。不過我在前一段時間看過。謝謝 – kmfk
好的,我和一些同事談過了,你不能使用ISODates作爲嵌入式文檔中的鍵。你可以將ISODate轉換爲UTC字符串嗎?您還必須確保您的查詢已重新組織爲UTC時間範圍搜索。 – Jenna
感謝您的回覆。我實際上編輯了我的問題以刪除組合鍵要求,因爲我認爲我在這裏錯誤地應用了術語。真的,爲了與MapReduce進行分組,你最終爲你的集合創建了一個多鍵對象 - 我不相信目前Doctrine的ODM代碼支持將EmbedOne或Hash作爲主鍵。 – kmfk