Есть ли способ создать новый порядковый номер из начального номера по умолчанию, используя «findAndModify» в пакетах jenssegers laravel 5.1 и mongoDB 2.6 или хотя бы в 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». Таким образом, это значение не существует в коллекции, и Монго создаст его. Но проблема здесь в том, что «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'];
}
но он возвращает ошибку, как показано ниже.
Я искал решение, но бесполезно. Пожалуйста, помогите с этим.
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …