jenssegers laravel 5.1およびmongoDB 2.6パッケージまたは少なくともmongo 2.6で「findAndModify」を使用して、デフォルトの開始番号から新しいシーケンス番号を作成する方法はありますか?
カウンター コレクションがあり、その中にすべての自動インクリメント カウンターを配置しています。そして今、会計年度の開始ごとにシーケンス番号を 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'];
}
しかし、それは以下のようなエラーを返します。
解決策を探しましたが、役に立ちません。これを手伝ってください。
前もって感謝します。