2016-12-22 1 views
0

Disons que j'avais une collection appelée "Historique" et "Employés" et qu'il y aura un document à ce sujet.shardcollection avec le document existant mongodb

Lorsque je crée la première collection avec

sh.shardCollection("Databases.History",{"email":1}) 

il fonctionne très bien, et j'ajouter un document à ce sujet.

Mais. Lorsque je crée la deuxième collection nommée « employees » avec

db.Employees.insert({"name":"Jhon Wick", "email":"[email protected]"}) 

et de créer une collection de tesson sur elle avec

sh.shardCollection("Databases.Employees",{"email":1}) 

, il ne fonctionne pas.

MongoDB dit que « s'il vous plaît créer un index qui commence par la touche tesson avant sharding. »

j'ai donc essayé d'ajouter un indice aux employés db.Employees.ensureIndex({"email":"hashed"}) et il fonctionne. Mais quand j'ai essayé shardCollection encore, il retourne toujours cette erreur.

Que dois-je faire? Est-ce que MongoDB a des règles que si je voudrais ajouter shardKeys sur une collection, il (collection) ne doit pas exister au début?

Répondre

2

Votre stratégie d'index doit être la même que celle de yout. Si vous avez créé un index haché, vous devez spécifier la stratégie hachée lors de l'ombrage.

sh.shardCollection("Databases.Employees",{"email":1})

shoule être remplacer par

sh.shardCollection("Databases.Employees",{"email":"hashed"})

https://docs.mongodb.com/v3.0/tutorial/shard-collection-with-a-hashed-shard-key/#shard-the-collection

+0

Omg, c'est ce que je suis absent. Je ne lis pas les docs clairement. S'excuser. Voulez-vous expliquer les deux façons différentes que je fais? En tout cas, ça m'aide à résoudre mon problème. Merci beaucoup –