2012-09-19 7 views
186

私はMongooseバージョン3とMongoDBバージョン2.2を使用しています。私は__vフィールドが私のMongoDB文書に現れ始めていることに気付きました。それはバージョン管理と関係がありますか?どのように使用されていますか? hereからMongoDBの "__v"フィールドとは

答えて

192

versionKeyは、最初のマングースによる を作成したときに、各文書に設定されたプロパティです。このキー値には ドキュメントの内部リビジョンが含まれています。このドキュメントプロパティの名前は設定可能です。 のデフォルト値は__vです。これはあなたのアプリケーションと競合する場合

次のような構成することができます。

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

この小道具を使用することが安全ですertyを使用して、ドキュメントが作成されたばかりかどうかを判断します(例: '__v === 0')? –

+18

@ExplosionPillsは将来の参照のために:いいえ。バージョンキーは、競合を引き起こし、配列の位置を変更する可能性のある操作の後でのみインクリメントされます。それ以外の更新では増分されません。元のリリースポストで詳しく説明しています:http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioning –

+2

クエリから返されたドキュメントからそれを隠す方法はありますか? – diosney

33

まあ、私はトニーのソリューションを見ることができない...ので、私はそれを自分で処理する必要が...


あなたがちょうどあなたができる、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 
}); 
+12

falseに設定した結果はどうなりますか? – xperator

+5

@xperatorここを参照してください→http://mongoosejs.com/docs/guide.html#versionKey –

+0

また、値を抑止するために 'resultFromMongo.toObject({versionKey:false})'を呼び出すこともできます。 –

関連する問題