首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[mongodb]如何保存单据并自动增加单据字段?

问[mongodb]如何保存单据并自动增加单据字段?
EN

Stack Overflow用户
提问于 2017-12-19 07:51:52
回答 2查看 104关注 0票数 0

我需要在我的mongo数据库中保存或插入一条新记录。我希望它的userid字段可以自动加1,在mongodb中可以吗?

​

代码语言:javascript
复制
Schema
generalUserApplication: {
    userid: Number, // 1
    lora: [
       {},
       {}
    ]
}

​

EN

回答 2

Stack Overflow用户

发布于 2017-12-19 07:59:37

以下是mongo教程中的方法。

您需要在您的数据库中创建新的集合counters。

​

代码语言:javascript
复制
function getNextSequence(db, name, callback) {
    db.collection("counters").findAndModify( { _id: name }, null, { $inc: { seq: 1 } }, function(err, result){
        if(err) callback(err, result);
        callback(err, result.value.seq);
    } );
}

​

然后,在插入新行时,可以使用getNextSequence(),如下所示。

​

代码语言:javascript
复制
getNextSequence(db, "user_id", function(err, result){
    if(!err){
        db.collection('users').insert({
            "_id": result,
            // ...
        });
    }
});

​

票数 0
EN

Stack Overflow用户

发布于 2017-12-19 14:48:09

我使用了另一个名为'mongoose-sequence-plugin‘的包来生成自动递增1的序列,在这里我发布了我曾经尝试过的代码。希望这能有所帮助。

模式:

代码语言:javascript
复制
var mongoose     = require('mongoose');
var sequenceGenerator = require('mongoose-sequence-plugin');
var Schema       = mongoose.Schema;

var ProjectSchema   = new Schema({
    Name : { type : String, required: true },
    Description : { type : String, required: true },
    DetailAddress : { type : String, required: true },
    ShortAddress : { type : String, required: true },
    Latitude : { type : Number, required: true },
    Longitude : { type : Number, required: true },
    PriceMin : { type : Number, required: true, index : true },
    PriceMax : { type : Number, required: true, index: true },
    Area : { type : Number, required: true },
    City : { type : String, required: true }
});

ProjectSchema.plugin(sequenceGenerator, {
    field: 'project_id',
    startAt: '10000001',
    prefix: 'PROJ',
    maxSaveRetries: 2
});

module.exports = mongoose.model('Project', ProjectSchema);

这将创建带有参数project_id的项目集合,从PROJ10000001开始并向后延伸。如果您删除最后插入的记录,那么这个包将读取字段project_id的当前最后一个条目,并通过递增当前id来分配下一个id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47878123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档