【发布时间】:2019-02-06 13:59:37
【问题描述】:
我希望 MongoDB 本身在插入时添加一个 _id,这样我就可以使用 ObjectID 跟踪插入时间,但是当我这样做 new MyModel(...) 时,moongose 会添加 id 字段。
如何防止这种情况,以便 db 本身添加 id?
或者,我如何创建一个将由 db 设置为 INSERTION 时间的字段?
编辑:我发现这在技术上用 mongoose 是不可能的,所以可以在插入完成时添加一个由 MongoDB 设置的字段吗?
我的模型(如果相关):
{
timestamp: {
type: Date,
required: true
},
signaler: {
type: String,
required: true,
trim: true
},
source: {
type: String,
required: false,
trim: true
},
category: {
type: String,
required: false,
trim: true
},
key: {
type: String,
required: true,
trim: true
},
level: {
type: String,
required: false,
trim: true,
uppercase: true,
enum: ['ALARM', 'WARNING', 'NORMAL']
},
payload: {
type: Schema.Types.Mixed,
required: true
}
}
【问题讨论】:
-
让 mongo 做和 mongoose 有区别吗?
-
我可能会做
new MyModel(),然后再调用model.save(),因此id实际上不会跟踪插入时间,我调用save()和实际插入的文档。 -
正如this answer 中提到的,控制这个的
forceServerObjectId连接选项被Mongoose 强制设置为false,并且不能被覆盖。我会提供当前文档的链接,但他们不再提及。 -
你可以发布你的模型吗?