mongo数据库,自定义id的自增,有方法么
发布于 2年前 作者 384324085 1337 次浏览
7 回复

可以通过自己管理ID的序列,例如使用Monogoose:

  var Schema = mongoose.Schema;
  var models = {};
  /**
    * 存储ID的序列值
    */
  Sequence = new Schema({
      _id: String,
      next: Number 
  });

  Sequence.statics.findAndModify = function (query, sort, doc, options, callback) {
      return this.collection.findAndModify(query, sort, doc, options, callback);
  };
  
  Sequence.statics.increment = function (schemaName, callback) {
      return this.collection.findAndModify({ _id: schemaName }, [], 
              { $inc: { next: 1 } }, {"new":true, upsert:true}, callback);
  };
  
  models.Sequence = mongoose.model('Sequence', Sequence);

  SomeDoc = new Schema({
    'id' : { type : Number, index: { unique: true } },
        .........
  });
//在创建文档时,获取自增ID值
  SomeDoc.pre('save', function(next) {
      var that = this;
      if( that.isNew ) {
          models.Sequence.increment('SomeDoc',function (err, result) {
              if (err)
                throw err;
              that.id = result.next;
              next();
          });
      } else {
          next();
      }
 }); 

你好哈!~请问mongodb在国内有什么比较好的社区么?

@xxzhczc 就这个nosql社区 http://nosql-db.com/ ,将mongoodb的挺多的

@a272121742 多谢大神~~~T-T

@a272121742 nosqldb是nodeclub做的啊。。。

在nosqlfan.com中也有mongodb的专题

@a272121742 哈哈,大家多来捧场啊,目前主要分享MongoDB的原理与经验。

回到顶部