让我们说我有一个名为" History"和"员工"并且会有一份文件。
当我使用
创建第一个集合时sh.shardCollection("Databases.History",{"email":1})
它运行正常,我在其上添加了一些文档。
但是。当我创建第二个名为" Employees"与
db.Employees.insert({"name":"Jhon Wick", "email":"jw@goodemail.com"})
并使用
在其上创建分片集合sh.shardCollection("Databases.Employees",{"email":1})
,它没有用。
MongoDB表示" 请在分片前创建一个以分片键开头的索引。"
所以我尝试使用db.Employees.ensureIndex({"email":"hashed"})
向员工添加一些索引
它的工作原理。但是,当我再次尝试shardCollection
时,它仍会返回该错误。
我该怎么办?
MongoDB是否有规则,如果我要在集合上添加shardKeys,它(集合)一开始不能存在?
答案 0 :(得分:2)
您的索引策略必须与您的分片策略相同。如果已创建散列索引,则必须在分片时指定散列策略。
sh.shardCollection("Databases.Employees",{"email":1})
shoule替换为
sh.shardCollection("Databases.Employees",{"email":"hashed"})