【发布时间】:2013-02-25 03:59:21
【问题描述】:
当我向我的节点服务器发布创建新项目的请求时,我需要从项目表中获取最大项目 ID。
I.E.我在该表中使用 itemId 作为单向上序列。
var Item = new Schema({
itemId: {type: Number, required: true}
...
});
是否有推荐的方法来获取最大 itemId,以便我可以将其加 1 并在创建新项目时使用该值?
【问题讨论】:
当我向我的节点服务器发布创建新项目的请求时,我需要从项目表中获取最大项目 ID。
I.E.我在该表中使用 itemId 作为单向上序列。
var Item = new Schema({
itemId: {type: Number, required: true}
...
});
是否有推荐的方法来获取最大 itemId,以便我可以将其加 1 并在创建新项目时使用该值?
【问题讨论】:
您可以通过以下方式获得最大itemId:
ItemModel.findOne().sort('-itemId').exec(function(err, item) {
// item.itemId is the max value
});
但是,您不能确定在查询最大值和添加最大值并使用它之间,最大值不会发生变化,因为可能会同时出现另一个请求同样的事情。
这就是为什么ObjectIds 是首选 ID 的原因之一。
【讨论】:
这是我发现的一个链接,它完全符合我的需要。甚至给出了几个选项。
http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
【讨论】: