[英]MongoDB object type/nested schema
好的,所以我有一個帶有eventSchema的events.js文件:
var eventSchema = mongoose.Schema({
name:{
type: String,
//required: true
venue:{
}
});
以及一個帶有會場架構的會場.js:
var mongoose = require('mongoose');
var venueSchema = mongoose.Schema(
{
name:{
type: String,
//required: true
},
postcode:{
type: String,
//required: true
},
town:{
type: String,
//required: true
}
});
我的問題是如何將事件模式中的“場地”字段鏈接到場地模式。 因此,基本上,當您創建一個新事件時,您只能從場所列表中添加一個場所。 提前致謝!
您可以按ID鏈接。 您無需在事件架構中添加所有“地點”字段。
var eventSchema = mongoose.Schema({
name:{
type: String,
//required: true
},
venue_id: Schema.Types.ObjectId,
});
由於您使用的是貓鼬,因此您可以將字段設置為
venue_id: { type: Schema.Types.ObjectId, ref: 'Venue' }
使用填充方法。
填充是將文檔中的指定路徑 (即場所ID)自動替換為其他集合(與場所ID匹配的文檔)中的文檔的過程。
你可以像這樣使用它
event.
findOne({ name: 'somename' }).
populate('venue').
exec(function (err, event) {
if (err) return handleError(err);
});
它將返回事件文檔,其事件文檔與不但會場ID匹配,而且會場ID匹配。
@godsnam給出的答案是正確的,但是當您要在架構中使用引用時。 如果您不想使用引用來做,那么這可能會對您有所幫助。
您可以通過簡單地編寫如下內容,將eventSchema鏈接到eventSchema中。
var venueSchema = mongoose.Schema(
{
name: {
type: String,
//required: true
},
postcode: {
type: String,
//required: true
},
town: {
type: String,
//required: true
}
});
var eventSchema = mongoose.Schema({
name: {
type: String,
//required: true
},
venue: venueSchema
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.