Как поменять ключ шарда - PullRequest
19 голосов
/ 08 июля 2011

Я знаю, что невозможно изменить ключ шарда. Но когда я установил неверный ключ шарда, как это изменить?

Ответы [ 4 ]

23 голосов
/ 08 июля 2011

сбросить коллекцию, которую вы осквернили .. импортируйте ее снова .. установите новый ключ шарда.

12 голосов
/ 09 сентября 2014

коллекция дампов

mongodump --host <hostname> --port <port> --collection <collection_name> --db <db_name>

открытие монго и удаление базы данных или коллекции (если у вас было более 1 коллекции)

mongo --host <hostname> --port <port>
show dbs
use <db_name>
db.dropDatabase() //it's only if you hade ONE database in db
exit

база данных импорта

mongorestore --host <hostname> --port <port> --collection <collection_name> --db <db_name> <path to <collection_name>.bson>

open mongos and shard

mongo --host <hostname> --port <port>
sh.status() (only to understand what is happen)
sh.enableSharding("<db_name>")
sh.shardCollection("<db_name>.<collection_name>",<shard key>,<option>)

что-то в этом роде ps У вас должен быть индекс в коллекции для ключа шарда.Поиск: "sureIndex ()"

1 голос
/ 20 февраля 2016

Спасибо за ваш процесс

Я работаю с MongoDB 3.0 и:

  1. mongoimport не является инструментом для импорта базы данных, сброшенной с помощью mongodump.
  2. Это mongorestore, которые прекрасно работают с точно такими же аргументами

С уважением

0 голосов
/ 18 сентября 2017

Это очень просто, используйте удалить + вставить вместо обновления.

var buf = db.col.findOne({'_id': ObjectId(<id>)});
buf['key'] = 'new key';
db.col.remove({'_id': ObjectId(<id>)});
db.col.insert(buf); //_id does not change!
...