有没有办法使用" 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'];
}
和下面的集合中的数据。
所以在上图中" 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'];
}
但它会返回如下错误。
我已经搜索了解决方案,但没有用。请帮助解决这个问题。
先谢谢。