在 MongoDB 中插入 MAX(numberField) + 1
Posted
技术标签:
【中文标题】在 MongoDB 中插入 MAX(numberField) + 1【英文标题】:Insert MAX(numberField) + 1 in MongoDB 【发布时间】:2017-03-21 16:33:29 【问题描述】:在插入新文档时,我只想插入一个值必须为 max(field) + 1.
的字段
例如
像这样的
db.test.insert(numberField : MAX(numberField) + 1)
此外,如果没有文档,第一个文档的 numberField 值必须为 0。在增量 1、2、3 之后也是如此。
我不希望两个查询一个找到最大数量,另一个插入增加 1。
有人可以帮忙吗。谢谢
【问题讨论】:
【参考方案1】:没有用于此的内置命令。获取此文档并自己计算密钥。
【讨论】:
我还能做些什么吗?【参考方案2】:有很多关于如何在 mongoose 中创建自增字段的堆栈溢出帖子。
auto-increment-document-number-in-mongo-mongoose
create-unique-autoincrement-field-with-mongoose
@edtech
这是使用 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 documentation 执行步骤1。
编辑 - 没有猫鼬的 Soluce - 又名 MongoDB 本机驱动程序
您可以使用mongodb native node.js driver 并实现这些堆栈溢出帖子中解释的解决方案之一:
auto-increment-in-node-mongodb-native-using-counters-collection
Creating incrementing numbers with mongoDB
【讨论】:
不使用猫鼬可以吗?以上是关于在 MongoDB 中插入 MAX(numberField) + 1的主要内容,如果未能解决你的问题,请参考以下文章
使用 mongoengine 将多文档插入到 mongodb