В этом примере я хочу удалить объект из массива ответов, текстовое поле которого совпадает с тем, которое я передал в запросе. Это моя схема для модели QAns:
const QuestAnsSchema = new Schema({
text: String,
author_id: String,
author_name: String,
answered: Boolean,
answers: [{
text: String,
author_id: String,
author_name: String,
}]
});
И это данные в базе данных
{
"_id":{
"$oid":"5ee7########989ca"
},
"text":"hyfffffff",
"author_id":"5ee749##########8081e",
"author_name":"Gamerz One",
"answered":false,
"answers":[],
"__v":{"$numberInt":"0"}
},
{
"_id":
{
"$oid":"5ee767ee8b57ee30e0dadac8"
},
"text":"What is your name?",
"author_id":"5ee749b44c3d1d13cc08081e",
"author_name":"Gamerz One",
"answered":true,
"answers":[
{
"_id":
{
"$oid":"5ee8ec9a68698c2d1cb4e043"
},
"text":"My name is gamerz\r\n",
"author_id":"5ee1b8ebdbf91b23a808d417",
"author_name":"Gamerz One"
},
{
"_id":
{
"$oid":"5eea07f832d091080cc047f2"
},
"text":"my name is kunal nalaawde",
"author_id":"5ee749b44c3d1d13cc08081e",
"author_name":"Gamerz One"
}
],
"__v":{"$numberInt":"6"}
}
Существует целый документ, содержащий объект QAns, который имеет массив ответов внутри их. Теперь я хочу удалить один объект из массива ответов, относящийся к конкретному вопросу. Например, из приведенных выше данных я хочу удалить ответ «Меня зовут gamerz» из вопроса «Как тебя зовут?», Передав текст ответа в запросе.
Я пробовал этот код, но он не работает
QAns.findOneAndUpdate({ text: questionText }, { $pull: { answers: { text: ansText} } })
.then((result,err) => {
if (err) console.log(err)
else console.log(result)
})
- QAns - это название модели
- questionText - это текст вопроса, ответ на который предполагается удалить
- ansText - это текст ответа, а объект, содержащий этот текст, предполагается удалить из массива ответов вопроса