2013-02-22 67 views
1

當我向我的節點服務器發送請求以創建新項目時,我需要從項目表中獲取最大項目ID。Mongoose:在插入新行之前從表中獲取最大ID

I.E.我在該表中使用itemId作爲一個順序序列。

var Item = new Schema({ 
    itemId: {type: Number, required: true} 
    ... 
}); 

是有一個推薦的方式來獲得最大的itemId這樣,當我創建一個新的項目,我可以把它加1,並使用該值?

回答

3

你可以得到最大itemId通過:

ItemModel.findOne().sort('-itemId').exec(function(err, item) { 
    // item.itemId is the max value 
}); 

但是,你不能確保最大值不,當你查詢的最大,當你添加一個到它之間改變並使用它,因爲另一個請求可能在同一時間進入同一個事物。

這是爲什麼ObjectId是首選ID的原因之一。

+0

我相信有一種方法。使用findAndModify命令怎麼樣? – lostintranslation 2013-02-24 17:02:10