我使用了一对一对多的模型,并想知道同时拥有一系列儿童和#34; ObjectID()s和" parent" model中的模型的ObjectID()是。例如:
// a client will have a new card every ten visits
var ClientSchema = new Schema({
first_name: String,
last_name: String,
email: String,
cards: [] // ObjectID()s, <--- is this necessary?
});
var CardSchema = new Schema({
client: ObjectID(), // <--- or is this enough?
visits: []
});
我认为client: ObjectID()
在大多数情况下应该可以解决问题,特别是Mongoose提供的人口选项。
答案 0 :(得分:1)
将引用ObjectId存储在其中一个文档中就足够了。
您可以在文档或this answer中阅读,参考字段需要type
和ref
。字段的名称是任意的。完成此操作并注册模型后,您可以使用模型填充查询。
var clientSchema = new Schema({
first_name: String,
last_name: String,
email: String
});
var cardSchema = new Schema({
client: {
type: Schema.Types.ObjectId,
ref: 'client'
}
});
// models
var Card = mongoose.model('Card', cardSchema);
var Client = mongoose.model('Client', clientSchema);
然而,存储一个ObjectId数组可能会有所帮助。然而,这也为错误创造了一个巨大的窗口。 SQL方言中外键和主键的不匹配。如果需要计算,您可以随时进行计数查询。我会说,做上述或做到这一点:
var clientSchema = new Schema({
first_name: String,
last_name: String,
email: String,
cards: [
{
type: Schema.Types.ObjectId,
ref: 'card'
}
]
});
var cardSchema = new Schema({
card_name: String
});
// models
var Card = mongoose.model('Card', cardSchema);
var Client = mongoose.model('Client', clientSchema);