2016-12-22 4 views
0

"History"と "Employees"というコレクションがあり、そこにドキュメントがあります。shardcollection with existing document mongodb

は、私はそれが正常に動作

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

との最初のコレクションを作成するとき、私はそれにいくつかの文書を追加します。

しかし、私は

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

と「従業員」という名前の第二のコレクションを作成し、

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

でそれにシャードのコレクションを作成すると、それは動作しません。

MongoDBは「はシャーディングの前にシャードキーで始まるインデックスを作成してください。」と述べている

ので、私はdb.Employees.ensureIndex({"email":"hashed"}) で従業員にいくつかのインデックスを追加しようと、それが動作します。しかし、shardCollectionをもう一度試してみると、まだそのエラーが返されます。

どうすればよいですか?

MongoDBには、コレクションにshardKeysを追加すると、最初は存在してはならないというルールがありますか?

答えて

2

あなたのインデックス戦略は、あなたの戦略と同じでなければなりません。ハッシュ・インデックスを作成した場合は、シャーディング中にハッシュ・ストラテジを指定する必要があります。

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

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

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

+0

すっごいと交換することshoule、それは私が欠けているものです。私はドキュメントをはっきりと読まない。謝罪する私がしている2つの方法とは違って説明してくれますか? とにかく、私の問題を解決するのに役立ちます。どうもありがとうございました –