Что такое поле «__v» в Mongoose?

164

Я использую Mongoose версию 3 с MongoDB версией 2.2. Я заметил, что в моих MongoDB документах появилось поле __v. Это как-то связано с версированием? Как он используется?

Теги:
mongoose

2 ответа

171
Лучший ответ

Из здесь:

versionKey - это набор свойств для каждого документа при первом создании by Mongoose. Значение этого ключа содержит внутреннюю ревизию документ. Имя этого свойства документа настраивается. по умолчанию - __v.

Если это противоречит вашему приложению, вы можете настроить как таковой:

new Schema({..}, { versionKey: '_somethingElse' })
  • 9
    Безопасно ли использовать это свойство, чтобы определить, был ли документ только что создан (например, __v === 0 )?
  • 23
    @ExplosionPills для дальнейшего использования: нет. Ключ версии увеличивается только после операций, которые могут вызвать конфликт, изменяя положения массива. Другие обновления не будут увеличивать его. Оригинальный пост релиз объясняет это детально: aaronheckmann.tumblr.com/post/48943525537/…
Показать ещё 4 комментария
31

Ну, я не вижу решения Тони... так что я должен сам справиться...


Если вам не нужна версия_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
});
  • 17
    каков результат установки его в false?
  • 6
    @xperator Смотрите здесь → mongoosejs.com/docs/guide.html#versionKey
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню