2012-09-19 37 views
186

'daki "__v" alanı nedir?sürüm 3'ü MongoDB sürüm 2.2 ile kullanıyorum. Ben MongoDB belgelerinde görüntülenen bir __v alan fark ettim. Sürüm oluşturma ile ilgisi var mı? Nasıl kullanılır? here itibarenMongoDB

cevap

192

:

versionKey ilk Gelincik tarafından oluştururken her belge üzerinde ayarlanmış bir özelliktir. Bu anahtar değeri, belgesinin iç revizyonunu içerir. Bu belge özelliğinin adı yapılandırılabilir. varsayılanı __v'dur. Bu uygulama ile çelişen Eğer

aşağıdaki gibi yapılandırabilirsiniz:

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

güvenli bu pervane kullanmak için mi Bir belgenin yeni oluşturulup oluşturulmadığını belirleme (ör. '__v === 0')? –

+18

@ExplosionPills gelecekteki başvurular için: no. Sürüm anahtarı, yalnızca çakışmalara neden olabilecek, dizi konumlarını değiştirebilecek işlemlerden sonra artar. Diğer güncellemeler bunu artırmayacaktır. Orijinal yayınlama sonrası ayrıntılı olarak açıklanmaktadır: http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioning –

+2

Geri gönderilen dokümanlardan sorgulardan gizlenmenin bir yolu var mı? – diosney

33

Eh, Tony'nin çözüm göremiyorum ... bu yüzden kendim işlemek için var ...

Eğer version_key gerekmiyorsa

yapabilirsiniz sadece:

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

Yanlışlıkla ayarlamanın sonucu nedir? – xperator

+5

@xperator Buraya bakın → http://mongoosejs.com/docs/guide.html#versionKey –

+0

Değeri aşmak için 'resultFromMongo.toObject ({versionKey: false})' diyebilirsiniz. –