我正在使用Mongoose
版本3和MongoDB
版本2.2。我注意到我的__v
文档中已经开始显示MongoDB
字段。它与版本控制有关吗?它是如何使用的?
答案 0 :(得分:255)
来自here:
versionKey
是首次创建时在每个文档上设置的属性 通过Mongoose。此键值包含的内部修订版 文献。此文档属性的名称是可配置的。该 默认值为__v
。如果这与您的应用程序冲突,您可以这样配置:
new Schema({..}, { versionKey: '_somethingElse' })
答案 1 :(得分:57)
好吧,我看不到Tony的解决方案......所以我必须自己处理......
如果您不需要version_key,您可以:
var UserSchema = new mongoose.Schema({
nickname: String,
reg_time: {type: Date, default: Date.now}
}, {
versionKey: false // You should be aware of the outcome after set to false
});
答案 2 :(得分:4)
为了在 NestJS 中移除需要给 Shema() 装饰器添加选项
@Schema({ versionKey: false })
答案 3 :(得分:3)
如果不需要,可以禁用版本密钥。
看这个例子:
var User = new mongoose.Schema({
FullName:{
type :String,
},
BirthDay:{
type :String,
},
Address:{
type :String,
},
Gender:{
type:String,
},
PhoneNumber:{
type:Number,
ref:'Account'
},
AccountID:{
type: Schema.Types.ObjectId,
ref: 'Account'
},
UserName:{
type:String,
ref:'Account'
}
},{collection:'User',
versionKey: false //here
});
答案 4 :(得分:0)
我们可以在架构定义中使用 versionKey:false
'use strict';
const mongoose = require('mongoose');
export class Account extends mongoose.Schema {
constructor(manager) {
var trans = {
tran_date: Date,
particulars: String,
debit: Number,
credit: Number,
balance: Number
}
super({
account_number: Number,
account_name: String,
ifsc_code: String,
password: String,
currency: String,
balance: Number,
beneficiaries: Array,
transaction: [trans]
}, {
versionKey: false // set to false then it wont create in mongodb
});
this.pre('remove', function(next) {
manager
.getModel(BENEFICIARY_MODEL)
.remove({
_id: {
$in: this.beneficiaries
}
})
.exec();
next();
});
}
}
答案 5 :(得分:0)
这是版本密钥。只要进行新的更新,它就会更新。我个人不喜欢禁用它。
如果您想了解更多信息,请阅读此解决方案 [1]:Mongoose versioning: when is it safe to disable it?
答案 6 :(得分:-2)
如果您通过 HTML 表单保存数据,则必须将架构键的名称设置为与您的 html 标签名称相同。