Mongoose / MongoDB – 引用另一个没有ObjectId的模式
我目前有两个模式。
var carSchema = new mongoose.Schema({ id: { type: Number, unique: true, required: true }, make: { type: String, required: true }, model: { type: String, required: true }, year: { type: Number, required: true, min: config.MIN_YEAR, max: config.MAX_YEAR }, color: { type: String }, price: [ // don't know what to put here... ], }); var priceSchema = new mongoose.Schema({ car_id: { type: Number }, amount: { type: Number, min: 0 }, year: { type: Number, min: config.MIN_YEAR, max: config.MAX_YEAR } });
从上面的两个模式可以看出,我试图从汽车模式中引用价格模式。 我知道你可以通过引用ObjectId( _id
)来实现,但我需要通过car_id
引用价格模式。 原因是因为我正在读取已经定义表头的CSV文件中的所有数据。 mongoose有什么可能的方法来做这个参考吗?
在汽车模式之上定义价格模式,然后将价格模式放到汽车模式中。
... color: { type: String }, price: [priceSchema] ...
你可以这样做:
var priceSchema = new mongoose.Schema({ car_id: { type: Number }, amount: { type: Number, min: 0 }, year: { type: Number, min: config.MIN_YEAR, max: config.MAX_YEAR } });
然后制作Price as的模型
var Price = mongoose.model('Price', priceSchema);
其次是:
var carSchema = new mongoose.Schema({ id: { type: Number, unique: true, required: true }, make: { type: String, required: true }, model: { type: String, required: true }, year: { type: Number, required: true, min: config.MIN_YEAR, max: config.MAX_YEAR }, color: { type: String }, price: { type: mongoose.Schema.Types.ObjectId, ref: 'Price' }, });
然后使汽车模型为:
var Car = mongoose.model('Car', carSchema);
这将做的伎俩。 然后你可以运行你的查询:
Car.find({_id: 1}) .populate('price') .exec(function(err, car) { // do stuff with your car objects });