我需要在我的mongo数据库中保存或插入一条新记录。我希望它的userid字段可以自动加1,在mongodb中可以吗?
Schema
generalUserApplication: {
userid: Number, // 1
lora: [
{},
{}
]
}
发布于 2017-12-19 07:59:37
以下是mongo教程中的方法。
您需要在您的数据库中创建新的集合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,
// ...
});
}
});
发布于 2017-12-19 14:48:09
我使用了另一个名为'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);这将创建带有参数project_id的项目集合,从PROJ10000001开始并向后延伸。如果您删除最后插入的记录,那么这个包将读取字段project_id的当前最后一个条目,并通过递增当前id来分配下一个id。
https://stackoverflow.com/questions/47878123
复制相似问题