Mongodb Mongo-2.2中的复合碎片索引
我正在阅读Mongo Shard keys for 2.2的文档,发现有点混乱 所有分片集合必须有一个以分片开头的索引 键。如果您对尚未包含文档和 如果没有这样的索引,shardCollection将在 碎片键。如果集合已包含文档,则必须 在使用shardCollection之前创建适当的索引 在版本2.2中更改:碎片键上的索引不再需要更改 与碎片键相同。此索引可以是碎片的索引 键本身,或一个复合索引,其中分片键是 索引的前缀。此索引不能是多键索引 如果您有一个名为people的集合,请使用字段进行切分{ zipcode:1},您希望用字段上的索引替换它 {zipcode:1,username:1},然后: 在{zipcode:1,username:1}:db.people.ensureIndex上创建索引( {zipcode:1,username:1});当MongoDB完成构建 索引,您可以安全地删除{zipcode:1}上的现有索引: dropIndex({zipcode:1})警告碎片上的索引 键不能是多键索引。如上所述,{zipcode:1, 用户名:1}只能在没有索引的情况下替换zipcode上的索引 用户名字段的数组值 如果删除了切分键的最后一个适当索引,请通过 仅在碎片键上重新创建索引 我有几个关于切分键和索引的问题 i) 从文档中可以看出,2.2之前支持多键索引。如果是这样,复合索引与多键索引有何不同 ii)拥有 [a] 以分片键和 [b] 以分片键作为前缀的索引 iii)关于分片键上的索引不应是多键索引的警告说明是什么?Mongodb Mongo-2.2中的复合碎片索引,mongodb,indexing,sharding,mongodb-indexes,Mongodb,Indexing,Sharding,Mongodb Indexes,我正在阅读Mongo Shard keys for 2.2的文档,发现有点混乱 所有分片集合必须有一个以分片开头的索引 键。如果您对尚未包含文档和 如果没有这样的索引,shardCollection将在 碎片键。如果集合已包含文档,则必须 在使用shardCollection之前创建适当的索引 在版本2.2中更改:碎片键上的索引不再需要更改 与碎片键相同。此索引可以是碎片的索引 键本身,或一个复合索引,其中分片键是 索引的前缀。此索引不能是多键索引 如果您有一个名为people的集合,请使用字段
db.people.ensureIndex({zipcode:1,username:1}不是一个多键索引吗?我注意到关于索引的MongoDB文档可能会造成混乱。多键索引是一种为数组中的每个元素创建单独索引项的方法:。另一方面,复合索引在两个或多个字段上创建索引项:
如果zipcode是shard键,则这些索引将起作用:
db.people.ensureIndex({ zipcode: 1})
db.people.ensureIndex({ zipcode: 1, username: 1 })
多键索引的一个示例:
{_id: 1, array: [{zipcode: x}, {username: y}]}
db.people.ensureIndex({array: 1})
我注意到关于索引的MongoDB文档可能造成了混淆。多键索引是为数组中的每个元素创建单独索引项的一种方法:。另一方面,复合索引在两个或多个字段上创建索引项:
如果zipcode是shard键,则这些索引将起作用:
db.people.ensureIndex({ zipcode: 1})
db.people.ensureIndex({ zipcode: 1, username: 1 })
多键索引的一个示例:
{_id: 1, array: [{zipcode: x}, {username: y}]}
db.people.ensureIndex({array: 1})
复合索引与多键索引有何不同?: 复合索引是与示例中描述的索引类似的索引:
{zipcode:1,username:1}
多键索引是对数组中的项进行索引的索引,如标记
上的索引,用于返回包含标记“mongoDB”的所有文档
有[a]以分片键开头的索引和[b]以分片键作为前缀的索引有什么区别?:
没什么
关于分片键上的索引不应是多键索引的警告说明是什么?:
当你认为一个多关键字索引是一个数组上的索引时,这是一个很有意义的概念。考虑标签数组上的索引。如果它在数组中有正确的值集合,文档可以很容易地存在于许多(或全部)碎片中。
换句话说,文档仍然必须基于单个值进行分片,而不是对象或数组。复合索引与多键索引有何不同?: 复合索引是与示例中描述的索引类似的索引:
{zipcode:1,username:1}
多键索引是对数组中的项进行索引的索引,如标记
上的索引,用于返回包含标记“mongoDB”的所有文档
有[a]以分片键开头的索引和[b]以分片键作为前缀的索引有什么区别?:
没什么
关于分片键上的索引不应是多键索引的警告说明是什么?:
当你认为一个多关键字索引是一个数组上的索引时,这是一个很有意义的概念。考虑标签数组上的索引。如果它在数组中有正确的值集合,文档可以很容易地存在于许多(或全部)碎片中。
换句话说,文档仍然必须基于单个值进行切分,而不是对象或数组