我正在使用 Mongoose
版本 3 和 MongoDB
版本 2.2。我注意到 __v
字段已开始出现在我的 MongoDB
文档中。它与版本控制有关吗?它是如何使用的?
原文由 Simon Lomax 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在使用 Mongoose
版本 3 和 MongoDB
版本 2.2。我注意到 __v
字段已开始出现在我的 MongoDB
文档中。它与版本控制有关吗?它是如何使用的?
原文由 Simon Lomax 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,我看不到托尼的解决方案……所以我必须自己处理……
如果你不需要 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
});
将 versionKey 设置为 false 意味着文档不再受版本控制。
如果文档包含子文档数组,就会出现问题。可以删除其中一个子文档,从而减小数组的大小。稍后,另一个操作可以访问数组中原始位置的子文档。
由于数组现在变小了,它可能会意外地访问数组中错误的子文档。
versionKey 通过将文档与 versionKey 相关联来解决这个问题,mongoose 在内部使用它来确保它访问正确的集合版本。
可以在以下位置找到更多信息:http: //aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
原文由 kenberkeley 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
从 这里: