MongoDB:每个索引都必须以 shardkey 为前缀
MongoDB: Must every index be prefixed with the shardkey
成像我们有这样的文档:
{
_id: ObjectId(""),
accountId: ObjectId(""),
userId: ObjectId(""),
someOtherFieldA: ["some", "array", "values"],
someOtherFieldB: ["other", "array", "values"],
...
}
此外还有多个复合索引,例如:
{ userId: 1, someOtherFieldA: 1, ... }
{ userId: 1, someOtherFieldB: 1, ... }
我们想按 accountId
进行分片。
是否足以为 accountId
添加一个字段索引,以便现有索引仍然有效?或者所有索引都需要 accountId
作为前缀(第一部分)?
当你 运行 sh.shardCollection()
命令然后 MongoDB 自动在分片键字段上创建一个索引(除非这样的索引已经存在),所以你不需要关心这个问题。
成像我们有这样的文档:
{
_id: ObjectId(""),
accountId: ObjectId(""),
userId: ObjectId(""),
someOtherFieldA: ["some", "array", "values"],
someOtherFieldB: ["other", "array", "values"],
...
}
此外还有多个复合索引,例如:
{ userId: 1, someOtherFieldA: 1, ... }
{ userId: 1, someOtherFieldB: 1, ... }
我们想按 accountId
进行分片。
是否足以为 accountId
添加一个字段索引,以便现有索引仍然有效?或者所有索引都需要 accountId
作为前缀(第一部分)?
当你 运行 sh.shardCollection()
命令然后 MongoDB 自动在分片键字段上创建一个索引(除非这样的索引已经存在),所以你不需要关心这个问题。