Как написать схему Мангуста для объекта, содержащего массив

#node.js #mongodb #mongoose

Вопрос:

Мне нужно создать схему для следующей структуры данных:

 shedule: [
        {
            SUN: {
                status: {type: Boolean, default: false},
                tasks: [
                    {
                        start_time: {type: Date},
                        end_time: {type: Date},
                      
                    }
                ]
            }

        },
        {
            MON: {
                status: {type: Boolean, default: false},
                tasks: [
                    {
                        start_time: {type: Date},
                        end_time: {type: Date},
                     
                    }
                ]
            }
        },
]
 

Я хочу вставить манекен в схему, и я попытался использовать следующий фрагмент кода.

 const shedule= [
            {SUN: {}},
            {MON: {}},
   
        ]
        let partner = await Model.findOneAndUpdate({_id: id}, {
            $set: {
                shedule: shedule
            }
        }, {
            new: true,
            upsert: false,
            useFindAndModify: false
        }).exec();
 

При вставке объект SUN вставляется дважды, а объект MON не вставляется в базу данных. Пример объекта, выходящего из монго, выглядит так.

 "shedule" : [ 
        {
            "SUN" : {
                "status" : false,
                "tasks" : []
            },
            "_id" : ObjectId("A")
        }, 
        {
            "SUN" : {
                "status" : false,
                "tasks" : []
            },
            "_id" : ObjectId("B")
        }, 
]
 

Вот ожидаемый результат.

 "shedule" : [ 
            {
                "SUN" : {
                    "status" : false,
                    "tasks" : []
                },
                "_id" : ObjectId("A")
            }, 
            {
                "MON" : {
                    "status" : false,
                    "tasks" : []
                },
                "_id" : ObjectId("B")
            }, 
    ]
 

Комментарии:

1. У тебя плохая схема! Чтобы иметь разные объекты, schedule вам нужно определить schedule: [] .