3

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

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

例如

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

现在明年的计数器应该从 100,000 开始。对于自动增量,我使用了以下代码。

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'];
}

和收集的数据如下。

在此处输入图像描述

所以上图中的“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'];
}

但它返回如下错误。

在此处输入图像描述

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

提前致谢。

4

0 回答 0