Ich benutze Mongoose
Version 3 mit MongoDB
Version 2.2. Ich habe bemerkt, dass ein __v
Feld erscheint seit kurzem in meinem MongoDB
Dokumente. Hat es etwas mit der Versionierung zu tun? Wie wird sie verwendet?
Antworten
Zu viele Anzeigen?En hier :
En
versionKey
ist eine Eigenschaft, die für jedes Dokument bei der ersten Erstellung von Mongoose. Dieser Schlüsselwert enthält die interne Revision des Dokuments. Der Name dieser Dokumenteigenschaft ist konfigurierbar. Die Standardwert ist__v
.Wenn dies zu Konflikten mit Ihrer Anwendung führt, können Sie dies entsprechend konfigurieren:
new Schema({..}, { versionKey: '_somethingElse' })
Nun, ich kann Tonys Lösung nicht sehen... also muss ich es selbst in die Hand nehmen...
Wenn Sie version_key nicht benötigen, können Sie einfach:
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
});
Das Setzen des versionKey auf false bedeutet, dass das Dokument nicht mehr versioniert ist.
Dies ist problematisch, wenn das Dokument eine Reihe von Unterdokumenten enthält. Eines der Unterdokumente könnte gelöscht werden, wodurch sich die Größe des Arrays verringert. Später könnte eine andere Operation auf das Unterdokument im Array an seiner ursprünglichen Position zugreifen.
Da das Array nun kleiner ist, könnte es versehentlich auf das falsche Unterdokument im Array zugreifen.
Der versionKey löst dieses Problem, indem er das Dokument mit einem versionKey verknüpft, der von mongoose intern verwendet wird, um sicherzustellen, dass es auf die richtige Version der Sammlung zugreift.
Weitere Informationen finden Sie unter: http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
Es ist möglich, den Versionsschlüssel zu deaktivieren, wenn Sie ihn nicht benötigen.
Siehe dieses Beispiel:
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
});
Es ist der Versionsschlüssel, der bei jeder neuen Aktualisierung aktualisiert wird. Ich persönlich mag es nicht, ihn zu deaktivieren.
Lesen Sie diese Lösung, wenn Sie mehr wissen wollen [1]: Mongoose-Versionierung: Wann ist es sicher, sie zu deaktivieren?
- See previous answers
- Weitere Antworten anzeigen