Как удалить несколько выбранных записей в коллекции в MongoDB, используя компас MongoDB - PullRequest
0 голосов
/ 21 мая 2018

Я очень плохо знаком с MongoDB и MongoDB Compass.

У меня около 1000 записей в коллекции клиентов.Как я могу удалить все записи сразу через компас MongoDB.

Большое спасибо,

1 Ответ

0 голосов
/ 21 мая 2018

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

Однако если у вас есть индексы, удаление коллекции также приведет к удалению коллекции.удалить индексы, но обычно гораздо быстрее удалить все это, а затем воссоздать как коллекцию, так и индексы, чем удалять все документы с помощью команды remove (db.collection.remove({})), так как для этого потребуется документ, освободив пространство.они берут и удаляют свою запись в индексах, если таковые имеются.

Единственное предостережение этого подхода заключается в том, что в изолированном кластере вы можете отбросить коллекцию и, даже если удаление считается успешным, коллекцияможет по-прежнему присутствовать в некоторых узлах, вызывая проблемы при его воссоздании.

Подробнее об этой проблеме OPEN и ее обходе можно прочитать по адресу https://jira.mongodb.org/browse/SERVER-17397:

РЕЗЮМЕ ВЫПУСКА

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

ВЛИЯНИЕ НА ПОЛЬЗОВАТЕЛЯ

Когда база данных / коллекция неуспешно удалено в данном узле, соответствующие файлы продолжают использовать дисковое пространство в этом узле.Попытка повторно использовать пространство имен может привести к неопределенному поведению.

WORKAROUNDS

Чтобы обойти эту проблему, можно выполнить следующие шаги, чтобы удалить базу данных / коллекцию в сегментированныйсреда:

  1. Удалите базу данных / коллекцию с помощью mongos.
  2. Подключитесь к первичному узлу каждого сегмента и убедитесь, что пространство имен отброшено.Если это не так, пожалуйста, бросьте его.Удаление базы данных (например, db.dropDatabase()) удаляет файлы данных на диске для удаляемой базы данных.
  3. Подключитесь к mongos, переключитесь на базу данных config и удалите любую ссылку наудалено пространство имен из коллекций chunks, locks, databases и collections:

    При удалении базы данных:

    use config
    db.collections.remove( { _id: /^DATABASE\./ } )
    db.databases.remove( { _id: "DATABASE" } )
    db.chunks.remove( { ns: /^DATABASE\./ } )
    db.locks.remove( { _id: /^DATABASE\./ } )
    

    При отбрасывании коллекции:

    use config
    db.collections.remove( { _id: "DATABASE.COLLECTION" } )
    db.chunks.remove( { ns: "DATABASE.COLLECTION" } )
    db.locks.remove( { _id: "DATABASE.COLLECTION" } )
    
  4. Подключитесь к каждому mongos и выполните команду flushRouterConfig.

...