當我向我的節點服務器發送請求以創建新項目時,我需要從項目表中獲取最大項目ID。Mongoose:在插入新行之前從表中獲取最大ID
I.E.我在該表中使用itemId作爲一個順序序列。
var Item = new Schema({
itemId: {type: Number, required: true}
...
});
是有一個推薦的方式來獲得最大的itemId這樣,當我創建一個新的項目,我可以把它加1,並使用該值?
當我向我的節點服務器發送請求以創建新項目時,我需要從項目表中獲取最大項目ID。Mongoose:在插入新行之前從表中獲取最大ID
I.E.我在該表中使用itemId作爲一個順序序列。
var Item = new Schema({
itemId: {type: Number, required: true}
...
});
是有一個推薦的方式來獲得最大的itemId這樣,當我創建一個新的項目,我可以把它加1,並使用該值?
這是一個鏈接,我發現,正是我需要做的。甚至提供了一些選擇。
http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
你可以得到最大itemId
通過:
ItemModel.findOne().sort('-itemId').exec(function(err, item) {
// item.itemId is the max value
});
但是,你不能確保最大值不,當你查詢的最大,當你添加一個到它之間改變並使用它,因爲另一個請求可能在同一時間進入同一個事物。
這是爲什麼ObjectId
是首選ID的原因之一。
我相信有一種方法。使用findAndModify命令怎麼樣? – lostintranslation 2013-02-24 17:02:10
mongo 3.4有沒有新的鏈接? – sam 2017-04-24 16:27:59