我想知道这是否会影响性能或其他重要功能,特别是在mongodb集合中查找文档时
我已经做到了
var ComputerArticleSchema = mongoose.Schema({
_id: {
type: String,
required: true
},
通常这样做
_id: {
type: Schema.Types.ObjectId,
required: true
},
答案 0 :(得分:0)
不是性能,而是当您有两个以上的模型并且它们具有关联时,如何在它们之间进行链接。因此,有必要。而且您不必像以前那样手动定义(写入),mongodb会自动创建_id。
答案 1 :(得分:0)
_id是自动创建的!
如果要引用其他表,请使用“ table_id”(或其他键名),并将类型指定为Schema.Types.ObjectId或Schema.ObjectId。
const ObjectId = Schema.ObjectId;
user_id: { type: ObjectId, ref: 'User' }
答案 2 :(得分:0)
存储字符串而不是ObjectIds 确实会降低性能。
ObjectId比等效字符串小(它们是12字节的二进制值,而不是24个字符的UTF-8字符串值),因此它们占用的内存空间更少。
当索引和文档在工作集中(即在内存中)时,Mongo确实非常快,因此通过降低数据占用量,您可以确保更多文档保留在内存中。这一点特别重要,因为您要谈论的id字段通常包含在索引中。