Как удалить записи, найденные с "отличным" в 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}})

Нет необходимости сначала запрашивать все записи в оболочке, а затем составлять запрос из них. Вы можете указать критерии непосредственно для команды удаления.

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