簡體   English   中英

使用Doctrine ODM在Symfony2中對嵌入式文檔進行排序

[英]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中)。

您可以使用兩個選項:

  1. 通過排序更新嵌入式文檔-您將重新創建文檔,因此無需排序(默認情況下,mongodb返回按創建順序排序的文檔)。 如果文檔不多和/或永久存儲排序結果,請使用這種情況

  2. 在mongodb中使用聚合-您將通過嵌入式文檔進行非規范化並以任何方式進行排序。 大負號-結果可能與原始文檔有所不同,並且無法合並為ODM類(映射到文檔的問題)。 如果文檔太多和/或結果臨時存儲(例如僅顯示在模板中),請使用這種情況

PS。 您的代碼中沒有排序命令;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM