Mongoose: Как я могу обновить документы со значениями массива, соответствующими одному элементу в массиве?

Используя Node.js, mongoDB, мангуст:

У меня есть коллекция БД, чьи записи имеют поле массивов строк.

Мне нужно удалить элементы в массивах всех записей, которые соответствуют переданной строке.

Это включает в себя поиск всех записей, которые имеют массив, содержащий совпадения, объединение элементов из массива и сохранение записей обратно в БД.

Я изо всех сил пытаюсь понять, как это сделать.


person hacklikecrack    schedule 11.04.2012    source источник


Ответы (2)


Вы сможете сделать это с помощью $pull или $pullAll (как описано здесь: www.mongodb.org/display/DOCS/Updating#Updating-%24pull). Например, в оболочке:

> db.coll.update({}, {$pull : {arrField : passedString}}, false, true);

Это обновляет все документы, извлекая переданную строку из массива arrField, если он существует. (false для отсутствия обновления, true для обновления нескольких документов.)

person kristina    schedule 11.04.2012

Вы можете использовать что-то вроде

Model.update({}, {$pull : {arrField : passedString}}, function(){})
person Amit    schedule 12.04.2012