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

时间:2013-02-22 22:05:18

标签: node.js mongoose

当我向节点服务器发布请求以创建新项目时,我需要从项目表中获取最大项目ID。

即。我使用itemId作为该表中的一个向上序列。

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

是否有推荐的方法来获取max itemId,以便我可以在创建新项目时为其添加1并使用该值?

2 个答案:

答案 0 :(得分:3)

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

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

但是,您无法确定在查询最大值和添加最大值并使用它时,最大值之间不会发生变化,因为另一个请求可能同时进入同样的事情。

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

答案 1 :(得分:1)

这是我发现的链接,正是我需要做的事情。甚至提供了几个选项。

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