2017-05-27 19 views
2

値がデータベースに挿入されるたびに(数字は自動インクリメントでなければならない)、String + numberを作成します。 スキーマで行うことはできますか?または、値をデータベースに挿入する前にそれを行う必要がありますか?マングースの文字列+自動インクリメント番号

'question' - MongoDBの中autoincrement number

var random = [{ 
     question: 'question1' 
    },{ 
     question: 'question2' 
    },{ 
     question: 'question3' 
    },{ 
     question: 'question4' 
    }]; 

    const RandomSchema = new Schema({ 
     question: { 
      type: String, 
      unique: true 
     } 
    }) 
+0

文字列部分が変更されますか? – e4c5

+0

@ e4c5文字列部分は常に同じです – carlos

答えて

1

自動インクリメントフィールドに続く>String、彼らはRDBMSで行うこととまったく同じように動作しません。より多くのオーバーヘッドが発生します。決して少なくはありませんが、自動フィールドを作成するのはsolved problemです。また、サードパーティ製のmongoose-autoincrementパッケージもあります。

拡張しました。あなたの問題は解決された問題でもあります。

ので、文字列の部分は常に同じ

は、単に表示時に自動インクリメントフィールドに「質問」を付加する文字列の連結を使用します。

0

サードパーティのパッケージを使用せずに、one of the approaches @ e4c5で実装したものがここにあります。 mongodインスタンスを起動した後

db.counters.insert(
    { 
     _id: "itemid", 
     seq: 0 
    } 
) 

function getNextSequence(id) { 
    var ret = db.counters.findAndModify(
      { 
      query: { _id: id }, 
      update: { $inc: { seq: 1 } }, 
      new: true 
      } 
    ); 

    return ret.seq; 
} 

db.randoms.insert(
    { 
    question: "question"+getNextSequence("itemid"), 
    } 
) 

db.randoms.insert(
    { 
    question: "question"+getNextSequence("itemid"), 
    } 
) 

mongo < add.jsの操作を行います。 は、以下のようにadd.jsを定義します。

関連する問題