[mongodb]如何保存文件并自动增加一个字段?

问题描述 投票:0回答:2

我需要在我的mongo数据库中保存或插入新记录。我希望它的字段“userid”可以自动增加1.是否可以在mongodb中执行此操作?

Schema
generalUserApplication: {
    userid: Number, // 1
    lora: [
       {},
       {}
    ]
}
mongodb mongoose
2个回答
0
投票

这是mongodb教程的方法。

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

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()

getNextSequence(db, "user_id", function(err, result){
    if(!err){
        db.collection('users').insert({
            "_id": result,
            // ...
        });
    }
});

0
投票

我使用另一个名为'mongoose-sequence-plugin'的包来生成序列,该序列自动递增1.这里我发布了我为同样的问题尝试过的代码。希望它会有所帮助。

架构:

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);

这将使用从PROJ10000001开始的参数project_id和病房创建项目集合。如果删除最后插入的记录,则此包将读取字段project_id的当前最后一个条目,并通过递增当前id来分配下一个id。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.