我想從MongoDB集合中選擇一個隨機文檔。如果我使用MySQL,我的解決方案將類似於this。如何隨機選擇Doctrine ODM?
如何使用Doctrine ODM查詢構建器從MongoDB Collection中選擇一個隨機文檔?
我想從MongoDB集合中選擇一個隨機文檔。如果我使用MySQL,我的解決方案將類似於this。如何隨機選擇Doctrine ODM?
如何使用Doctrine ODM查詢構建器從MongoDB Collection中選擇一個隨機文檔?
我已經解決了我的問題是這樣的:
public function getRandomUser()
{
$qb = $this->getDocumentManager()->createQueryBuilder('AppBundle:User');
$count = $qb->getQuery()->count();
$skip_count = random_int(0, $count);
$qb->skip($skip_count);
return $qb->getQuery()->getSingleResult();
}
<?php
// Create Query Builder.
$dm = $this->getDocumentManager()->createQueryBuilder('Document');
// Count documents.
$count = $dm->getQuery()->execute()->count();
// Get random number not exceeding $count variable.
$random = mt_rand(0, $count);
// Query for document with skip.
$random_document = $dm->skip($random)
->getQuery()
->getSingleResult();
嘗試這種解決方案:
public function getRandomDocument()
{
$qb = $this->getDocumentManager()->createQueryBuilder('YourBundle:TargetDocument');
$count = $qb->getQuery()->count();
$skip_count = random_int(0, $count);
$qb->skip($skip_count);
return $qb->getQuery()->getSingleResult();
}