如何使用mongodb 2.6和jensseger laravel中的起始编号创建新的自动增加序列号?

时间:2016-01-23 15:19:44

标签: php mongodb jenssegers-mongodb

有没有办法使用" findAndModify"从默认起始编号创建新的序列号?在jenssegers laravel 5.1和mongoDB 2.6包中或者至少在mongo 2.6中?

我有一个计数器集合,我将所有的自动增量计数器放在那里。现在我需要在每个财政年度开始时将序列号重置为100000。

例如

今年(15-16),计数器从100,000开始,增加12K记录,达到112,000。

现在明年,柜台应该从10万开始。对于自动增量,我使用了以下代码。

public function getNextSequence($name) {
    $retval = DB::getCollection('my_counts')->findAndModify(
            array('_id' => $name), array('$inc' => array('seq' => 1)), null, 
                  array('new' => true, 'upsert' => true)
    );
    return (int) $retval['seq'];
}

和下面的集合中的数据。

enter image description here

所以在上图中" grants_15-16"是当年的序列。现在当16-17到来时,我将通过" grants_16-17"。因此,该值不存在于集合中,而mongo将创建一个。但这里的问题是," seq"从" 1"开始。但我希望它从" 100000"开始。

所以我改变了下面的代码。

public function getNextSequence($name) {
    $retval = DB::getCollection('test_counters')->findAndModify(
            array('_id' => $name), array('$setOnInsert' => array('seq' => 100000), 
                  '$inc' => array('seq' => 1)), 
                  null, array('new' => true, 'upsert' => true)
    );
    return (int) $retval['seq'];
}

但它会返回如下错误。

enter image description here

我已经搜索了解决方案,但没有用。请帮助解决这个问题。

先谢谢。

0 个答案:

没有答案