如何查詢只知道使用Doctrine MongoDB的ObjectId的對象?通過id查詢,使用$dm->findOneBy(array('id' => $id))
將僅返回一個區分的文檔類型的結果,但不會返回其他結果。通過命令行查詢,例如db.documents.find({ "_id": ObjectId(...) });
返回預期的行。使用Doctrine MongoDB查詢ID區分集合
編輯:這個問題似乎是,如果我不知道我正在查詢的文檔類型,並且正在使用自定義存儲庫,則使用的文檔名稱與類綁定兩個文檔類中只有一個的名稱(因此返回其他類型文檔的0結果)。這通常是有道理的,因爲如果我不知道什麼類型的文件,我正在尋找應該怎麼學說?鑑於歧視集合,是否有任何方法可以自動在存儲庫中使用正確的文檔名稱,而不必明確地告訴教條?
請參閱下面的問題抽象。
謝謝!
我有一組生活在同一文件收集,鑑別的文件被他們type
領域歧視例如
{
"_id" : ObjectId("510fdb6c91a4cb4c25000000"),
"name" : "Contract",
"type" : "document"
}
{
"_id" : ObjectId("510fdb6c91a4cb4c25000001"),
"name" : "Tutorial",
"length_min": "60"
"type" : "video"
}
...
我的兩個Document
和Video
類映射的樣子:
<!-- "Doc" Document mapping -->
<doctrine-mongo-mapping ...>
<document name="Doc" collection="documents" repository-class="DocRepository">
<discriminator-field fieldName="type" />
<discriminator-map>
<discriminator-mapping value="document" class="Doc" />
<discriminator-mapping value="video" class="Video" />
</discriminator-map>
<field fieldName="id" id="true" />
<field fieldName="name" field="name" type="string" />
</document>
</doctrine-mongo-mapping>
<!-- "Video" Document mapping -->
<doctrine-mongo-mapping ...>
<document name="Video" collection="documents" repository-class="DocRepository">
<discriminator-field fieldName="type" />
<discriminator-map>
<discriminator-mapping value="document" class="Doc" />
<discriminator-mapping value="video" class="Video" />
</discriminator-map>
<field fieldName="id" id="true" />
<field fieldName="name" field="name" type="string" />
<field fieldName="length_min" field="length_min" type="int" />
</document>
</doctrine-mongo-mapping>
是的,我看了一段時間後得出了幾乎相同的結論;最初我正在使用'mapped-superclass'構造,但是他們不能擁有與它們相關的定製庫,據我所知。感謝「SINGLE_COLLECTION」繼承類型的建議。 –