Ho un db ("mydb") su mongo che contiene 2 raccolte (c1 e c2). c1 è già hash sharded. Voglio ritagliare una seconda collezione allo stesso modo. Ottengo il seguente errore:non può creare una raccolta su mongodb
use mydb
sh.shardCollection("mydb.c2", {"LOG_DATE": "hashed"})
{
"proposedKey" : {
"LOG_DATE" : "hashed"
},
"curIndexes" : [
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "mydb.c1",
"name" : "_id_"
}
],
"ok" : 0,
"errmsg" : "please create an index that starts with the shard key before sharding."
così ho fatto
db.c2.ensureIndex({LOG_DATE: 1})
sh.shardCollection("mydb.c2", {"LOG_DATE": "hashed"})
stesso errore, ma mostra il nuovo indice.
"proposedKey" : {
"LOG_DATE" : "hashed"
},
"curIndexes" : [
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "mydb.c2",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"LOG_DATE" : 1
},
"ns" : "mydb.c2",
"name" : "LOG_DATE_1"
}
],
"ok" : 0,
"errmsg" : "please create an index that starts with the shard key before sharding."
solo per essere sicuri, corro:
db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "mydb.c1", "name" : "_id_" }
{ "v" : 1, "key" : { "timestamp" : "hashed" }, "ns" : "mydb.c1", "name" : "timestamp_hashed" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns": "mydb.c2", "name" : "_id_" }
{ "v" : 1, "key" : { "LOG_DATE" : 1 }, "ns" : "mydb.c2", "name" : "LOG_DATE_1" }
provo di nuovo gli stessi comandi di admin e viene a mancare con lo stesso errore.
Quindi ho provato su admin senza "hash" e ha funzionato.
db.runCommand({shardCollection: "mydb.c2", key: {"LOG_DATE": 1}})
Problema: ora la mia collezione è sharded su qualcosa che non è hash e non posso cambiarlo (errore: "già sharded")
- Cosa c'era di sbagliato in quello che ho fatto?
- Come posso risolvere questo problema?
Grazie in anticipo
Thomas
'ensureIndex ({LOG_DATE:" hashed "})' http://docs.mongodb.org/manual/tutorial/create-a-hashed-index/, non è possibile modificare la chiave shard, sarà necessario rifare la collezione – Sammaye
Ho rimosso la raccolta e ho rifatto la mia raccolta, ma non riesco a ritagliarla nuovamente. Come rimuovo le informazioni di sharding prima di fare collection.remove()? – Thomas
removeShard dovrebbe essere in grado di eliminare i metadati: http://docs.mongodb.org/manual/reference/command/removeShard/#dbcmd.removeShard – Sammaye