我需要在MongoDB中的自動遞增字段。 我找到了documentation on how to use a counter-collection in MongoDB。MongoDB自動增加計數器文檔與Doctrine ODM
但是,我的價值id不是_id,它不一定設置,我需要通過Doctrine ODM(這是我不熟悉的)來使用它。我如何通過Doctrine ODM使用反收集?
我需要在MongoDB中的自動遞增字段。 我找到了documentation on how to use a counter-collection in MongoDB。MongoDB自動增加計數器文檔與Doctrine ODM
但是,我的價值id不是_id,它不一定設置,我需要通過Doctrine ODM(這是我不熟悉的)來使用它。我如何通過Doctrine ODM使用反收集?
不太我所希望的,但在兩個步驟做,是我找到的唯一解決方案:
$order = $dm->getRepository('Documents\Order')->findOneBy(array('id' => <some_id>));
$order->setOrderNumber($counter->getCount());
...
$counter = $dm->createQueryBuilder('Documents\Counter')
->findAndUpdate()
->returnNew()
->field('name')->equals('order_number')
->field('count')->inc(1)
->getQuery()
->execute();
那麼其他文檔中使用返回值
對不起,我沒有足夠的評論意見。您可以有一個自動增量字段而不使用計數器收集。您可以在Doctrine mongoDB文檔類中爲您的feild變量使用INCREMENT
Doctrine Annotation marker。 看到這裏:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#identifiers
在cakePhp我也努力產生自動增量,但後來我相信對於具有大量文檔的可伸縮數據庫,這是不可取的。 **「警告 通常在MongoDB中,您不會爲_id字段或任何字段使用自動增量模式,因爲它不針對包含大量文檔的數據庫進行擴展。通常,默認值ObjectId更爲理想爲_id。** http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ – electropoet