2012-09-19 148 views
186

Estoy usando Mongoose versión 3 con MongoDB versión 2.2. Me di cuenta de que un campo __v ha comenzado a aparecer en mis documentos MongoDB. ¿Tiene algo que ver con el control de versiones? ¿Cómo se usa?¿Qué es el campo "__v" en MongoDB

Respuesta

192

De here:

El versionKey es una propiedad situada en cada documento cuando se creó por primera vez por Mangosta. Este valor de clave contiene la revisión interna del documento . El nombre de esta propiedad del documento es configurable. El valor predeterminado es __v.

Si esto entra en conflicto con su aplicación se puede configurar como tal:

new Schema({..}, { versionKey: '_somethingElse' }) 
+7

¿es seguro utilizar este prop erty para determinar si un documento se acaba de crear (p. '__v === 0')? –

+18

@ExplosionPills para futura referencia: no. La clave de versión solo se incrementa después de las operaciones que podrían causar un conflicto, modificando las posiciones de la matriz. Otras actualizaciones no lo incrementarán. La publicación original lo explica en detalle: http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioning –

+2

¿Hay alguna manera de ocultarlo de los documentos devueltos a partir de las consultas? – diosney

33

Bueno, no se ve solución de Tony ... así que tengo que manejar yo mismo ...


Si usted no necesita version_key, puede simplemente:

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 
}); 
+12

¿Cuál es el resultado de establecerlo en falso? – xperator

+5

@xperator Consulte aquí → http://mongoosejs.com/docs/guide.html#versionKey –

+0

También puede llamar a 'resultFromMongo.toObject ({versionKey: false})', para reemplazar el valor. –

Cuestiones relacionadas