Как удалить записи, найденные с "отличным" в MongoDB?
Я новичок в MongoDB, так что я знаю, что это действительно простой вопрос, но я искал везде и не могу найти ответ? В основном я пытаюсь найти все записи в коллекции, которые содержат слово "удалить", и удалить их. Чтобы получить записи, я использую
db.collection.distinct("delete")
(поправьте меня, если я ошибаюсь). Но как мне на самом деле удалить их? Я пытался создать переменную из этого (т.е.
var query = db.collection.distinct("delete")
) и затем выполняет
db.collection.remove(query)
но записи все еще там? Любая помощь будет отличной!
3 ответа
Предполагая, что вы пытаетесь удалить все документы, которые содержат delete
поле:
db.collection.remove({delete: {$exists: true}});
var query = db.collection.distinct("delete")
db.collection.remove({ delete : {$in : query} })
Будьте осторожны: он удалит каждый документ, имеющий ключ удаления
Если вы предоставите образец документа, ответы, которые вы получите, могут быть более конкретными и точными.
Здесь может быть путаница по поводу отличного здесь. Вы сказали "документы, содержащие слово" удалить ". Вопрос в том, в каком поле появляется слово "удалить"?
Введенная вами команда Different () возвращает вам отличные значения из поля с именем "delete", а не идентификаторов документов, в которых слово "delete" появляется в некотором значении поля.
Например, если у вас есть запись
{_id:1, x:"delete"}
{_id:2,delete:true}
{_id:3,delete:null}
{_id:4,delete:false}
{_id:5, x:"leave alone"}
вы удалите первый документ с
db.foo.remove({x:"delete"})
вы бы удалили вторую запись с
db.foo.remove({delete:true})
вы бы удалили записи 2,3,4 с
db.foo.remove({delete:{$exists:true}})
Нет необходимости сначала запрашивать все записи в оболочке, а затем составлять запрос из них. Вы можете указать критерии непосредственно для команды удаления.