Mongodb 在mongoose模式中使用ObjectId字段类型可以吗
比如说,我将在mongodb建立多对一关系Mongodb 在mongoose模式中使用ObjectId字段类型可以吗,mongodb,mongoose,schema,Mongodb,Mongoose,Schema,比如说,我将在mongodb建立多对一关系 var mongoose = require('mongoose'); var Schema = mongoose.Schema, ObjectID = Schema.Types.ObjectId; var productSchema = new Schema({ supplier: { _id: ObjectId, name: String } }); 我读过mongodb的一篇博文,内容是: 只
var mongoose = require('mongoose');
var Schema = mongoose.Schema,
ObjectID = Schema.Types.ObjectId;
var productSchema = new Schema({
supplier: {
_id: ObjectId,
name: String
}
});
我读过mongodb的一篇博文,内容是:
只有当读取与更新的比率较高时,反规范化才有意义。如果您经常读取非规范化数据,但很少更新它
由于供应商
不经常更新,我决定对其名称进行非规范化,但仍保留\u id
,因此当我必须更新时,我有一些参考
我决定使用
ObjectId
作为类型,但我还没有实际测试它是否有效,我已经想知道,我做得是否正确,使用String
类型是否更实用。你肯定想在那里使用ObjectId
,但也要为它定义一个ref
,告诉Mongoose它所指的模型,以便在需要完整的供应商对象时可以使用Mongoose的参考:
var-productSchema=新模式({
供应商:{
_id:{type:ObjectId,ref:'Supplier'},
名称:String
}
});
这使您能够执行以下操作:
Product.findById(id).populate('supplier.\u id').exec(err,Product){
//product.supplier.\u id是完整的供应商文档,而不仅仅是\u id
});
到目前为止,我还没有机会阅读ref。如果这项技术能做一些好的事情,你能指出一些吗?所以我可以选择这个作为答案,谢谢!