首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蒙古族复合碎片指数( 2.2 )

蒙古族复合碎片指数( 2.2 )
EN

Stack Overflow用户
提问于 2012-08-20 19:18:10
回答 2查看 1.6K关注 0票数 1

我读了2.2的Mongo键的文档,发现它有点混乱。

所有已切分的集合都必须有一个以切分键开头的索引。如果您分割一个尚未包含文档的集合,并且没有这样的索引,则shardCollection将在shard键上创建一个索引。如果集合已经包含文档,则必须在使用shardCollection之前创建适当的索引。 在2.2版中进行了更改:碎片键上的索引不再需要与shard键相同。这个索引可以像以前一样是切分键本身的索引,或者是一个复合索引,其中碎片键是索引的前缀。这个索引不能是多键索引。 如果您有一个名为people的集合,并且使用字段{ zipcode: 1 }进行切分,并且您希望用字段{ zipcode: 1,用户名:1 }上的索引来替换它,那么: 在{ zipcode: 1,username: 1 }:db.people.ensureIndex( { zipcode: 1,username: 1})上创建一个索引;当MongoDB完成对该索引的构建时,您可以安全地删除{ zipcode: 1 }:db.people.dropIndex( { zipcode: 1})上的现有索引;警告切分键上的索引不能是多键索引。如前所述,{ zipcode: 1,用户名:1}上的索引只能在用户名字段没有数组值时才能替换。 如果您删除了碎片键的最后一个适当的索引,请通过仅在shard键上重新创建一个索引来恢复。

我有几个关于切碎键和索引的问题。

从文档来看,多键索引在2.2之前就得到了支持。如果是这样的话,复合索引与多键索引有何不同?

(二)有一个以切分键开头的索引和以一个切分键作为前缀的索引之间有什么区别?

(三)关于切分键上的索引的警告说明不应该是多键索引?db.people.ensureIndex( { zipcode: 1,username: 1})不是一个多键索引吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-23 17:30:23

复合索引与多键索引有何不同?:

复合索引是类似于您在示例中描述的索引:

{ zipcode: 1, username: 1 }

多键索引是对数组中的项进行索引的索引,如tags上的索引,用于返回包含“mongoDB”标记的所有文档,

有一个以切分键开头的索引和以一个切分键作为前缀的索引之间的区别是什么?:

没什么。

关于切分键上的索引的警告说明不应该是多键索引?:

当您考虑到多键索引是数组上的索引时,这是相当有意义的。考虑一下标签数组上的索引。如果一个文档在数组中有正确的值集合,那么它可以很容易地存在于许多(或全部)碎片中。

换句话说,文档仍然必须基于单个值进行切分,而不是对象或数组。

票数 4
EN

Stack Overflow用户

发布于 2012-08-20 21:41:29

我注意到索引的MongoDB文档可能造成了混乱。多键索引是为数组中的每个元素创建单独索引条目的一种方法:http://www.mongodb.org/display/DOCS/Multikeys。另一方面,复合索引在两个或多个字段( http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeys )上创建索引条目。

  1. 以前版本的MongoDB不支持多键碎片密钥索引。由于MongoDB根据切分键值的范围拆分了已分割的集合,因此不可能使用多键索引。
  2. 假设我理解你的问题,没有什么不同。shard键索引可以是单个字段上的索引,也可以是以shard键开头的复合索引。
  3. 这是一个复合索引的示例,它可以用于shard键索引。

如果key代码是shard键,那么这些索引就可以工作了:

代码语言:javascript
复制
db.people.ensureIndex({ zipcode: 1}) 

db.people.ensureIndex({ zipcode: 1, username: 1 }) 

多键索引的示例:

代码语言:javascript
复制
{_id: 1, array: [{zipcode: x}, {username: y}]}

db.people.ensureIndex({array: 1}) 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12043724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档