【发布时间】:2017-07-02 19:35:15
【问题描述】:
我目前有两个架构。
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 文件中读取所有数据。猫鼬有什么可能的方法来做这个参考吗?
【问题讨论】:
-
为什么不同时保留
car_id和_id(新创建的)?因为使用其他 ID,您将无法从populate中受益。 -
@TalhaAwan 我将如何构建我的模式,使我能够同时利用
car_id和_id来引用价格模式?这就是我不太明白的 -
当您从 CSV 文件导入记录并从中创建价格对象时,您将同时拥有
car_id和_id(猫鼬默认输入)。在汽车价格参考数组中输入_id。 -
@TalhaAwan
price: [ { type: mongoose.Schema.Types.ObjectId, ref: "Price" } ]是我最初写的(这就是我认为你告诉我要做的),但我没有看到这如何让我参考@ 987654333@ ==car_id -
如果您确实需要单独的集合,您可以在汽车中保留一系列价格参考,或在每个价格文档中保留汽车参考。无论哪种方式,引用都应该是 mongo id。 CSV 中的
car_id可以按原样存储在汽车文档中,但您可能不想将其用于引用。
标签: javascript node.js mongodb mongoose