Сперва хочу найти истории именно этого юзера, потом элемент с массива. И если он существует то передвинуть его в начало массива
Вот так я изменяю\добавляю элементы во вложенном объекте, где поля fin, eng, rus, это массивы
const dictionaryId = req.params.id; const nestedObjectId = req.body.id; const update = { $set: { "dictionary.$[elem].fin": req.body.update.fin, "dictionary.$[elem].eng": req.body.update.eng, "dictionary.$[elem].rus": req.body.update.rus, }, $push: { "dictionary.$[elem].synonyms.fin": req.body.update.synonyms?.fin, "dictionary.$[elem].synonyms.eng": req.body.update.synonyms?.eng, "dictionary.$[elem].synonyms.rus": req.body.update.synonyms?.rus } }; const options = { arrayFilters: [{ "elem._id": nestedObjectId }], new: true, }; const updatedDict = await GlobalDictModel.findOneAndUpdate( { _id: dictionaryId }, update, options ); return res.json(updatedDict);
GlobalDictModel.findOneAndUpdate( { _id: dictionaryId }, update, options ); Параметр { _id: dictionaryId } = это id документа который ты ищешь по id. У этого документа есть вложенный объект с id, по которому мы ищем через параметр const options = { arrayFilters: [{ "elem._id": nestedObjectId }], new: true, };
купил подписку на гпт?
Сам всё делал
Ну так передавай в первый параметр id документа в котором ищешь, в параметр options передавай id пользователя, историю которого хочешь найти
Тебе нужно передавать именно вот "этот" айди
честно, ваще не понял как сделать по твоему решению сделал так
Обсуждают сегодня