2017-12-18 25 views

答えて

0

ここモンゴのチュートリアルからの方法です。

dbに新しいコレクションcountersを作成する必要があります。

function getNextSequence(db, name, callback) { 
 
    db.collection("counters").findAndModify({ _id: name }, null, { $inc: { seq: 1 } }, function(err, result){ 
 
     if(err) callback(err, result); 
 
     callback(err, result.value.seq); 
 
    }); 
 
}

その後、あなたは、新しい行を挿入すると、以下のようgetNextSequence()使用することができます。

getNextSequence(db, "user_id", function(err, result){ 
 
    if(!err){ 
 
     db.collection('users').insert({ 
 
      "_id": result, 
 
      // ... 
 
     }); 
 
    } 
 
});

0

私はここで私は私が試してみましたコードを掲載しています。1. により自動インクリメントである配列を生成するために、「マングース・シーケンス・プラグイン」という名前の別のパッケージを使用しています同じ問題。それが助けてくれることを願って。

スキーマ:

var mongoose  = require('mongoose'); 
var sequenceGenerator = require('mongoose-sequence-plugin'); 
var Schema  = mongoose.Schema; 

var ProjectSchema = new Schema({ 
    Name : { type : String, required: true }, 
    Description : { type : String, required: true }, 
    DetailAddress : { type : String, required: true }, 
    ShortAddress : { type : String, required: true }, 
    Latitude : { type : Number, required: true }, 
    Longitude : { type : Number, required: true }, 
    PriceMin : { type : Number, required: true, index : true }, 
    PriceMax : { type : Number, required: true, index: true }, 
    Area : { type : Number, required: true }, 
    City : { type : String, required: true } 
}); 

ProjectSchema.plugin(sequenceGenerator, { 
    field: 'project_id', 
    startAt: '10000001', 
    prefix: 'PROJ', 
    maxSaveRetries: 2 
}); 

module.exports = mongoose.model('Project', ProjectSchema); 

これは、パラメータでのプロジェクトのコレクションを作成するには、PROJ10000001からと病棟から始まるをPROJECT_ID。最後に挿入されたレコードを削除すると、このパッケージはproject_idフィールドの現在の最後のエントリを読み込み、次のIDは現在のIDをインクリメントして割り当てられます。

関連する問題