Вы можете решить эту проблему, добавив декоратор @MongoDB \ Index (unique = true) в поле billNo.
В документе Счета billNo будет определен как
/**
* @MongoDB\Field(name="bill_no", type="string")
* @MongoDB\Index(unique=true)
*/
protected $billNo;
В вашем контроллере вы должны использовать функцию sureIndexes (), чтобы обеспечить создание индекса, и обернуть свой код в try ... catch, чтобы избежать исключения дублирующегося индекса в случае сохранения двух сущностей с одинаковым billNo.
Ваш контроллер будет похож на это:
$dm = $this->get('doctrine_mongodb')->getManager();
$dm->getSchemaManager()->ensureIndexes();
$lastBill = $dm->getRepository('AppBundle:LastBill')->findOneByKey('BILL');
$billNo = b.''.date('Y').'/'.($lastBill->getLastBillNo()+1);
$bill = new Bills();
$bill->setBillNo($billNo)
$dm->persist($bill);
$lastBill->setLastBillNo($lastBill->getLastBillNo()+1);
try
{
$dm->flush();
} catch (\Exception $e) {
// write some code here based what you want.
}