как добавить элемент во вложенный массив объектов массива в mongodb

#arrays #database #mongodb #mongoose #nested

Вопрос:

Это изображение содержит мои данные ,
я использую mongodb в качестве базы данных и мангуста для подключения
, я хочу вставить элементы в массив тем и в массив подтем

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

1. Пожалуйста, приложите документ в виде фрагмента и предоставьте примеры входных данных и ожидаемых выходных данных. Спасибо.

2. У меня есть модель с именем Classroom , которая будет содержать данные в формате, показанном на рисунке, теперь я хочу обновить эти данные, добавив дополнительные темы и подтемы

3. если вы можете, предоставьте данные в виде текста JSON и ожидаемый вывод в виде текста JSON, чтобы мы могли скопировать их, написать запрос и протестировать его.

Ответ №1:

Вы можете использовать фильтры массива для этой задачи , например:

Это приведет к появлению нового элемента={test:1} в массиве тем с элементом с именем сеанса:’Java’:

 db.c.update( { name: "class 1" } , { $push: { 'sessions.$[x].topics':{test:1 } } } , { arrayFilters : [{ 'x.sessionName':'Java' }] } )  

Это приведет к перемещению элемента=1 в массив подтем с _id:1 из сеансов с именем сеанса=’Java’:

 db.c.update( { name: "class 1" } , { $push: { 'sessions.$[x].topics.$[y].subTopic':1 } } , { arrayFilters : [{ 'x.sessionName':'Java' },{'y._id':1}] } )  

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

1. и для их удаления, что я должен сделать

2. Для удаления вы можете использовать $pull или $unset таким же образом