2012-04-30 3 views

ответ

2

Каков наилучший способ для этого?

Вы нашли это. Существует только два способа очистки коллекции:

  1. db.some_coll.remove({}): который удаляет все по одному. Это занимает много времени, потому что каждое удаление так же дорого, как и вставка.
  2. db.some_coll.drop(): просто очищает всю коллекцию.

Я хочу, чтобы эффективно удалить все данные целиком, но без потери коллекции.

Почему бы не отказаться от коллекции? Вы хотите удалить все данные, все, что вам нужно сделать, - это воссоздать индексы и, возможно, настройки в коллекции (только только для коллекций).

Восстанавливающие индексы очень простой. Итак, что такое зависание?

+0

У меня также осколок. Если я использую drop, я должен перенастроить его для совместного использования. Как я могу сделать это прозрачно для приложения? – Julias

+0

Облицовка коллекции похожа на повторное создание индекса, за исключением того, что вы потеряете данные в базе данных конфигурации в соответствии с вашими кусками. Вам нужно будет определить * «прозрачно для приложения» *? Вы удаляете кучу данных, приложение будет замечено. –

+0

Да, конечно. Моя бизнес-логика - это удаление данных и вставка новых данных. Я знаю, что есть период времени, когда данные не будут постоянно заполняться. Но я хочу, чтобы настройка совместного доступа была прозрачной для моего сервера приложений. – Julias