Mongo の findAndModify() を使用して、連続した値を生成できます。以下にその例を示します。
// (assuming db is a reference to a MongoDB database)
var counters = db.collection('counters');
var query = {'name': 'counterName'};
var order = [['_id','asc']];
var inc = {$inc:{'next':1}};
var options = {new: true, upsert: true};
counters.findAndModify(query, order, inc, options, function(err, doc) {
if(err) {
callback(err);
return;
}
var id = doc.next;
callback(null, id);
});
シーケンシャル ID の生成はアプリケーションでは見栄えがしますが、いくつかの欠点があることに注意してください (たとえば、データベースを地理的に分割する必要がある場合)。これが、Mongo が長い疑似乱数キーを使用する理由です。