Mongoose:在插入新行之前从表中获取最大值

当我发布一个请求到我的节点服务器创build一个新的项目,我需要从项目表中获取最大的项目ID。

IE我使用itemId作为在该表中的一个序列。

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

是否有一个build议的方式来获取最大itemId,这样我可以添加1,并使用该值,当我创build一个新的项目?

您可以通过以下方式获取最大itemId

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

但是,不能确定在查询最大值时以及何时将最大值添加到最大值并使用它,因为另一个请求可能同时进入同一事件。

这是为什么ObjectId是首选ID的原因之一。

这是一个链接,我发现,正是我需要做的。 甚至提供了一些select。

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/