Tôi đang sử dụng Mongoose
phiên bản 3 với MongoDB
phiên bản 2.2. Tôi đã nhận thấy một __v
lĩnh vực đã bắt đầu xuất hiện trong các MongoDB
tài liệu của tôi . Nó có phải là một cái gì đó để làm với phiên bản? Nó được sử dụng như thế nào?
Tôi đang sử dụng Mongoose
phiên bản 3 với MongoDB
phiên bản 2.2. Tôi đã nhận thấy một __v
lĩnh vực đã bắt đầu xuất hiện trong các MongoDB
tài liệu của tôi . Nó có phải là một cái gì đó để làm với phiên bản? Nó được sử dụng như thế nào?
Câu trả lời:
Từ đây :
Các
versionKey
là một tài sản đặt trên mỗi tài liệu khi lần đầu tiên được tạo ra bởi Mongoose. Giá trị khóa này chứa bản sửa đổi nội bộ của tài liệu. Tên của tài sản tài liệu này là cấu hình. Mặc định là__v
.Nếu điều này mâu thuẫn với ứng dụng của bạn, bạn có thể định cấu hình như sau:
new Schema({..}, { versionKey: '_somethingElse' })
__v === 0
)?
query.select('-__v')
. @ExplumpingPills bạn sẽ cần thêm phần mềm trung gian mongoose như thế nào schema.pre('save', function (next) { this.increment(); next(); })
.
Chà, tôi không thể thấy giải pháp của Tony ... vì vậy tôi phải tự xử lý nó ...
Nếu bạn không cần version_key, bạn có thể chỉ cần:
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
});
Đặt phiên bảnKey thành false nghĩa là tài liệu không còn được phiên bản.
Đây là vấn đề nếu tài liệu chứa một mảng các văn bản con. Một trong những văn bản con có thể bị xóa, làm giảm kích thước của mảng. Sau đó, một hoạt động khác có thể truy cập vào văn bản con trong mảng ở vị trí ban đầu.
Vì mảng bây giờ nhỏ hơn, nó có thể vô tình truy cập vào văn bản con sai trong mảng.
VersionKey giải quyết điều này bằng cách liên kết tài liệu với phiên bảnKey, được sử dụng bởi mongoose trong nội bộ để đảm bảo nó truy cập đúng phiên bản bộ sưu tập.
Thông tin chi tiết có thể được tìm thấy tại: http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
resultFromMongo.toObject({ versionKey: false })
, để thay thế giá trị.
schema.set('versionKey', false);
Chúng ta có thể sử dụng versionKey: false trong định nghĩa Schema
'use strict';
const mongoose = require('mongoose');
export class Account extends mongoose.Schema {
constructor(manager) {
var trans = {
tran_date: Date,
particulars: String,
debit: Number,
credit: Number,
balance: Number
}
super({
account_number: Number,
account_name: String,
ifsc_code: String,
password: String,
currency: String,
balance: Number,
beneficiaries: Array,
transaction: [trans]
}, {
versionKey: false // set to false then it wont create in mongodb
});
this.pre('remove', function(next) {
manager
.getModel(BENEFICIARY_MODEL)
.remove({
_id: {
$in: this.beneficiaries
}
})
.exec();
next();
});
}
}