如何动态创建集合名称(取决于用户信息)

How create collections names dynamically (depending on the user info)

我想创建一个更深入的集合.. 数据更有条理。

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

这是我的实际架构:

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
        }
    }
});

这不是很枯燥,所以我想知道是否可以动态更改周的名称。如果可以,怎么办?

如果可能的话,真正的模式应该是:

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

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

如果第一个问题可以,我如何在 dinamicallyDay 中创建入口?

比如有人想注册到星期一,但是我的数据库里已经有这一天了,我想把这个注册进去,像这样:

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

这可能吗?

如果是这样..你们能帮帮我吗??

Schema 构造函数接受一个对象,因此您没有理由不能动态构建它。

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'
         }
    }
});