2013-05-30 41 views

回答

3

不太我所希望的,但在兩個步驟做,是我找到的唯一解決方案:

$order = $dm->getRepository('Documents\Order')->findOneBy(array('id' => <some_id>)); 
$order->setOrderNumber($counter->getCount()); 
... 
1

$counter = $dm->createQueryBuilder('Documents\Counter') 
->findAndUpdate() 
->returnNew() 
->field('name')->equals('order_number') 
->field('count')->inc(1) 
->getQuery() 
->execute(); 

那麼其他文檔中使用返回值

對不起,我沒有足夠的評論意見。您可以有一個自動增量字段而不使用計數器收集。您可以在Doctrine mongoDB文檔類中爲您的feild變量使用INCREMENTDoctrine Annotation marker。 看到這裏:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#identifiers

+0

在cakePhp我也努力產生自動增量,但後來我相信對於具有大量文檔的可伸縮數據庫,這是不可取的。 **「警告 通常在MongoDB中,您不會爲_id字段或任何字段使用自動增量模式,因爲它不針對包含大量文檔的數據庫進行擴展。通常,默認值ObjectId更爲理想爲_id。** http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ – electropoet

相關問題