Обновление вложенной коллекции в mongodb

Я хочу обновить элемент dong монго:

Схема:

let quizSchema = mongose.Schema({
    _id: mongose.Schema.Types.ObjectId,
    question: String,
    answer:[{_id:mongose.Schema.Types.ObjectId,a:String}]
});

Запрос образца:

{
    "id":"5a759fb9b953782e38366032",
    "question":"change 111",
    "answer":[
        {"_id":"5a759fb9b953782e38366034","a":"new 123"},
        {"_id":"5a75fccdc678791900c87be9","a":"www"},
        {"a":"ssss"}
        ]
}

Теперь я хочу обновить базу сбора моего идентификатора, задать базу вопросов по идентификатору и после обновления мой массив ответов. Если элемент имеет _id, это означает, что я обновляю в этом объекте. Если у него нет _id, это означает, что я хочу добавить его. Для элементов, которые в настоящее время находятся в массиве в базе данных, я хочу удалить их, так как пользователь просто удаляет их и передает форму. Я, что даже возможно?

Я думаю, что мне нужны платные запросы, чтобы сделать это, но, возможно, это можно сделать за меньшее. 1) обновить вопрос легко, поэтому я не буду проходить 2) я хочу удалить элементы, которые не соответствуют:

Quiz.update(
    {_id:req.body.id,"answer._id":{$nin:["req.body.answer.$._id"]}},
    {
        $unset:{"answer.$._id":""}
    },
    (err,quiz)=>{
        res.send(quiz);
    }
);


$pull:{"answer":{$not:{"a":'www'}}} this is remove all answer array
$pull:{"answer":{"a":'www'}} this will work for one element
$pull:{"answer":{$nin:['www']}} this remove all answer

Очевидно, я не могу получить тот странный синтаксис запроса... Это не работает

3) обновить существующее и добавить новое, не знаю, как с этим справиться

0 ответов

Другие вопросы по тегам