如何dynamic创build集合名称(取决于用户信息)

我想创build一个更深的收集..数据更加组织。

我知道如何访问数据,如何检索信息,但我不知道如何创build模式。

这是我的实际模式:

var MySchema = new Schema ({ event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }); 

我想要改变:

 var BookingSchema = new Schema ({ monday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }, friday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }, saturday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } sunday: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } }); 

这不是很干燥,所以我想知道是否可以dynamic改变星期的名字。 如果可以的话,该怎么办?

如果这是可能的,真正的模式将是:

  dinamicallyDay: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } 

这是我的第一个问题,现在是我第二个问题。

如果第一个问题是可能的,我怎么能在dinamicallyDay内创build入口?

例如,有人想要注册到星期一,但这一天已经存在于我的数据库中,我想把这个寄存器里面,就像这样:

  monday: { 1: { event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } } } 

这个有可能?

如果是的话,你能帮我吗?

Schema构造函数接受一个对象,所以没有理由不能dynamic构build它。

 var mySchema = {} ['mon', 'fri', 'satur', 'sun'].forEach(function(day) { mySchema[ day + 'day' ] = [{ event: { full: String, date: String, name: String, }, person: { name: String, phone: String, email: String, obs: String } }]; }); var BookingSchema = new Schema(mySchema); 

请注意,我把它改成了一个数组,所以现在你可以把更多的事件推到同一天做类似的事情

 db.update({'Search here'}, { $push : { friday : { event: { full: 'value', date: 'value', name: 'value' }, person: { name : 'value', phone: 'value', email: 'value', obs : 'value' } } });