根据this mongodb article,可以自动增加一个字段,我希望使用计数器收集方式.

这个例子的问题是,我没有成千上万的人使用mongo控制台在数据库中输入数据.相反,我试图使用mongoose .

所以我的模式是这样的:

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集合,并添加了一个_id为'entityId'的页面.从这里开始,我不知道如何使用mongoose更新该页面并获得递增的数字.

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

推荐答案

下面是一个在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();
    });
});

Mongodb相关问答推荐

如何从文档列表的数组内部打印一个对象?

如何在MongoDB中使用Aggregation来计算两个键相同但字段不同的对象数组的总值,并将其合并为一个?

spring-data-mongodb 上的 TopN 聚合

分组前的 MongoDb 聚合总数

可变用户 Select

MongoDB 更新:如果新值不同,则将旧字段值推送到另一个数组字段

System.FormatException occurred in MongoDB.Bson.dll - XXX is not a valid 24 digit hex string

实现 twitter 和 facebook 之类的主题标签

mongoose默认值等于其他值

带有 mongodb 和 nodejs 的实时 Web 应用程序

为 php 5.6 (XAMPP) 添加 mongodb 扩展

如何在 Mongoose 中更新数组值

如何使用 MongoDB 以编程方式预拆分基于 GUID 的分片键

具有 AWS 云形成和自动zoom 的 Mongodb 集群

MongoDB限制内存

没有参考选项的mongoose填充字段

Mongo聚合框架,排序然后分组不起作用

如何在 Ubuntu 上安装 mongodb-clients 最新版本?

python + pymongo:如何从 for 循环中在 mongo 中的现有文档上插入新字段

MongoDB聚合框架的索引优化