2017-05-27 165 views
2

每次在數據庫上插入一個值(數字必須是自動增量)時,我想創建一個String + number。 Schema有可能嗎?或者在數據庫插入數據之前需要這麼做嗎?貓鼬上的字符串+自動增量編號

'question' - >String其次是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

自增字段,不完全相同的方式工作,他們在RDBMS做。涉及更多的開銷。從來沒有少,創建一個汽車領域是solved problem。還有一個第三方包mongoose-autoincrement,使它更容易。

從此延伸。你的問題也是一個解決的問題。由於

字符串部分將始終是相同的

只需使用字符串拼接顯示時前面加上「問題」的自動遞增領域。

0

以下是我使用one of the approaches @ e4c5指出的實現方法,不使用第三方軟件包。 定義add.js如下:

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"), 
    } 
) 

開始的mongod實例後,做mongo < add.js