【问题标题】:Mongoose: Get max id from table before inserting new rowMongoose:在插入新行之前从表中获取最大 ID
【发布时间】:2013-02-25 03:59:21
【问题描述】:

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

I.E.我在该表中使用 itemId 作为单向上序列。

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

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

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我确信有办法。使用 findAndModify 命令怎么样。
    【解决方案2】:

    这是我发现的一个链接,它完全符合我的需要。甚至给出了几个选项。

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

    【讨论】:

    • mongo 3.4有新链接吗?
    猜你喜欢
    • 2011-08-29
    • 2023-03-14
    • 1970-01-01
    • 2017-01-21
    • 2011-04-20
    • 1970-01-01
    • 2015-07-16
    • 2020-10-31
    • 2017-09-28
    相关资源
    最近更新 更多