MongooseJS — извлекать все $ из встроенного документа по значению

#javascript #mongodb #mongoose

#javascript #mongodb #mongoose

Вопрос:

В настоящее время у меня есть следующая схема модели:

 var userModel = mongoose.schema({
    images: {
        public: [{url: {type: String}}]}
});
  

Я хочу удалить элементы из «images.public» по их значению url, а не по их идентификатору.

 var to_remove = [{url: "a"}, {url: "b"}];
// db entry with id "ID" contains entries with these properties.

userModel.findByIdAndUpdate(ID,
            {$pullAll: {"images.public": to_remove}},
            function(err, doc) {
                if (err) {
                    throw(err);
                }
            }
        );
  

Однако это не показывает никаких ошибок и не удаляет элементы, которые я хочу удалить из базы данных. Как бы мне соответствующим образом настроить это?

Ответ №1:

 // Notice the change of structure in to_remove
var to_remove = ["a", "b"];
userModel.findByIdAndUpdate(ID,
    {$pull: {"images.public": {url: {$in: to_remove}}}},
        function(err, doc) {
            if (err) {
                throw(err);
            }
        }
    );
  

Проблема здесь в том, что изменилась структура переменной to_remove , к счастью, в моем случае это не было проблемой.