我的架构如下:
foodtruck.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Items = require('./items.js');
var FoodTruckSchema = new Schema({
foodtruck_name:String,
foodtruck_location:String,
foodtruck_rating:{type:Number,default:5},
foodtruck_total_votes:{type:Number,default:0},
foodtruck_tag:String,
foodtruck_open_status:{type:Number,default:1}, //0 open 1 closed
foodtruck_starting_timing:String,
foodtruck_closing_timing:String,
foodtruck_cusine:[String],
foodtruck_img:String,
foodtruck_logo:String,
item_list: [ {type : mongoose.Schema.ObjectId, ref : 'items'}]
},{ versionKey: false });
module.exports = mongoose.model('foodtruck',FoodTruckSchema);
现在,我想要做的是,我想添加 foodtruck_meta_data:[String] 。我应该创建另一个集合 xyz ,我在其中提供此元字段,然后提供 foodtruck_id 作为参考?
或者还有其他更好的方法吗?
答案 0 :(得分:0)
我可以在这里考虑三种情况:
仅在案例1中需要新的集合,否则您将最终在多个食品卡车中复制(嵌入)相同的文档。不过,我希望将foodtruck_meta_data_id
保留在foodtruck
中,因为它有助于使用populate
获取元数据。
2 enum
验证简单而有效:
foodtruck_meta_data: {
type: String,
enum: ['meta1', 'meta2', 'meta3'],
required: true
}
如果是3,你应该在foodtruck_meta_data
中嵌入一个文件或放一个字符串。