MongoDB使用Doctrine ODM自动增加计数器文档

时间:2013-05-30 14:39:28

标签: doctrine-odm

我需要在MongoDB中使用自动递增字段。 我找到了documentation on how to use a counter-collection in MongoDB

但是,我的值不是_id,它不一定设置,我需要通过Doctrine ODM(我不太熟悉)使用它。如何通过Doctrine ODM使用反收集?

2 个答案:

答案 0 :(得分:3)

不完全是我所希望的,但是分两步完成它是我找到的唯一解决方案:

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

然后使用其他文档中返回的值:

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

答案 1 :(得分:2)

抱歉,我没有足够的意见发表评论。您可以使用自动增量字段而不使用计数器集合。您可以在Doctrine mongoDB文档类中使用INCREMENT Doctrine Annotation marker作为您的feild变量。 见这里:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#identifiers