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 自动在分片键字段上创建一个索引(除非这样的索引已经存在),所以你不需要关心这个问题。