当前位置: 首页 > 面试题库 >

mongodb自动递增

况唯
2023-03-14
问题内容

我的架构看起来像这样:

var entitySchema = mongoose.Schema({
  testvalue:{type:String,default:function getNextSequence() {
        console.log('what is this:',mongoose);//this is mongoose
        var ret = db.counters.findAndModify({
                 query: { _id:'entityId' },
                 update: { $inc: { seq: 1 } },
                 new: true
               }
        );
        return ret.seq;
      }
    }
});

我已经在同一数据库中创建了counters集合,并添加了一个带有’entityId’的_id的页面。从这里我不确定如何使用猫鼬来更新该页面并获取递增编号。

没有计数器的架构,我希望它保持这种状态,因为这实际上不是应用程序使用的实体。仅应在模式中使用它来自动递增字段。


问题答案:

这是一个示例,如何在Mongoose中实现自动增量字段:

var CounterSchema = Schema({
    _id: {type: String, required: true},
    seq: { type: Number, default: 0 }
});
var counter = mongoose.model('counter', CounterSchema);

var entitySchema = mongoose.Schema({
    testvalue: {type: String}
});

entitySchema.pre('save', function(next) {
    var doc = this;
    counter.findByIdAndUpdate({_id: 'entityId'}, {$inc: { seq: 1} }, function(error, counter)   {
        if(error)
            return next(error);
        doc.testvalue = counter.seq;
        next();
    });
});


 类似资料:
  • 问题内容: 嗨,我想使用Java在mongodb中自动递增。我对此完全陌生。在文档中,我找到了这样的解决方案: 谁能建议我如何使用Java做到这一点?我对此完全陌生。 问题答案: 首先使用“ 创建自动递增序列字段”,您应该使用mongoDB shell创建集合,并且集合应为: 因此,您将获得包含如下字段的集合,现在在Java中创建函数,并且此函数具有作为字符串的参数,因此如下所示: } 上面的函数

  • 现在我想从nodejs插入。我已经试过了,但不起作用

  • 主要内容:使用 counters 集合,创建 Javascript 函数,使用 Javascript 函数MongoDB 中没有像 SQL 中那样可以赋予某个字段自动递增的功能,默认情况下 MongoDB 的 _id 字段是系统自动生成的 12 字节的唯一标识,但是在某些情况下我们可能需要在 MongoDB 的某个字段上实现类似 SQL 中的自动递增功能。 因为 MongoDB 中没有实现这个功能,所以我们需要通过编程的方式来实现。本节中我们将通过两个集合(counters 和 tutorial

  • 问题内容: 就像在MYSQL中一样,我想要一个递增的ID。 问题答案: MongoDB旨在进行水平扩展。在这种情况下,自动递增将导致id冲突。这就是为什么id看起来更像guid / uuid的原因。

  • 问题内容: 我有一个使用hibernate和注解的j2ee应用程序。我如何注释我的pojo类中的Id字段以将其设置为自动增量或自动生成。在添加bean时,我是否将该字段留在bean中为null? 问题答案: 并在保留时将其保留为。(如果使用包装器) 在某些情况下,该策略被解析为或,因此你可能需要手动将其设置为(取决于基础数据库)。 似乎+ 指定序列名称对你有用。

  • 问题内容: 使用MySQL(特别是5.0)有没有办法让auto_increment字段的值基于分组列? 例: 我不想通过任何“疯狂”的方法来达到这个目的,但是如果需要的话。 问题答案: 对于MyISAM和BDB表,您可以将auto_increment字段作为键的次要部分,例如 这是手册对此所说的 在这种情况下,将为AUTO_INCREMENT列生成的值计算为MAX(auto_increment_c