[英]Sorting embedded document in Symfony2 with Doctrine ODM
我無法對嵌入式文檔進行排序。 這是我的代碼。
Children.php
namespace Acme\CCBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document
*/
class Children {
/..
/**
* @MongoDB\EmbedMany(targetDocument="Vaccine")
*/
protected $vaccine = array();
}
Vaccine.php
namespace Acme\CCBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\EmbeddedDocument
*/
class Vaccine
{
/**
* @MongoDB\Date
*/
protected $recordDate;
/**
* @MongoDB\String
*/
protected $vaccineName;
}
在我的控制器中:RecordController.php
public function showVaccineAction($id) {
$child = $this->get('doctrine_mongodb')
->getRepository('AcmeCCBundle:Children')
->find($id);
$vac = $child->getVaccine();
return $this->render(
'AcmeCCBundle:Record:show_vaccine.html.twig', array('vac' => $vac)
);
}
我只是可以查詢孩子的所有疫苗,而沒有訂購。 有誰能夠幫助我?
您不能在mongodb中對嵌入式文檔進行排序(分別在oddrine odm中)。
您可以使用兩個選項:
通過排序更新嵌入式文檔-您將重新創建文檔,因此無需排序(默認情況下,mongodb返回按創建順序排序的文檔)。 如果文檔不多和/或永久存儲排序結果,請使用這種情況
在mongodb中使用聚合-您將通過嵌入式文檔進行非規范化並以任何方式進行排序。 大負號-結果可能與原始文檔有所不同,並且無法合並為ODM類(映射到文檔的問題)。 如果文檔太多和/或結果臨時存儲(例如僅顯示在模板中),請使用這種情況
PS。 您的代碼中沒有排序命令;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.