我无法对嵌入文档进行排序。这是我的代码。
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)
);
}
我只能查询孩子的所有疫苗,而且没有订购。有谁能够帮我?
答案 0 :(得分:0)
你不能在mongodb中对嵌入式文档进行排序(分别在doctrine odm中)。
您可以使用两个选项:
使用排序更新嵌入式文档 - 您将重新创建文档,因此无需排序(默认情况下mongodb返回按创建顺序排序的文档)。 如果文件不多和/或永久存储分类结果,则使用此案例
在mongodb中使用聚合 - 您可以通过嵌入式文档进行反规范化并以任何方式排序。 大减号 - 结果可能与原始文档不同,并且不能水合到ODM类(映射到文档的问题)。 如果文件太多和/或结果存储临时(例如仅显示在模板中)
PS。你的代码中没有排序命令;)