2013-09-02 3 views
3

Я создал коллекцию на mongodb, которая оштукатурена не на ключ. Я хочу удалить свою коллекцию и перестроить ее так, чтобы она была наложена на правый ключ.Как отследить коллекцию на mongoDB?

К сожалению, db.removeCollection ('mycollection') удаляет данные, но не содержит некоторые данные метаданных.

db.printShardingStatus все еще показывает информацию о sharding, которую я неправильно использовал для mycollection, и если я создам коллекцию снова, я не могу очертить ее новым хорошим ключом, потому что он говорит «уже оштрафован».

Любое решение?

Благодаря

Томас

+1

Вам необходимо создать новую коллекцию с помощью правильного ключа осколка. Если у вас уже есть данные из старой резервной копии, вы можете просто использовать db.collectionName.drop() - это приведет к потере данных * и * метаданных. (btw, нет команды db.removeCollection). –

ответ

4

Если проверить этот JIRA билет, есть очень подробное обсуждение того, как безопасно unshard (и повторного осколок, с помощью другого ключа) коллекции в MongoDB: https://jira.mongodb.org/browse/SERVER-9845

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

+0

После создания нового shardKey я заметил огромное количество кусков, созданных при вставке новых документов. Кажется, что решение останавливаетBalancer, создает новый shardKey И, по крайней мере, делает одно разделение перед перезапуском балансировки. – aldwinaldwin

Смежные вопросы