代码之家  ›  专栏  ›  技术社区  ›  Jey Balachandran

MongoDB索引

  •  3
  • Jey Balachandran  · 技术社区  · 14 年前

    我正在通过mongoid将我的Rails应用程序转换为使用mongodb。我有两个关于索引的问题。我想我知道答案,但我希望有人谁有更多的经验与mongodb确认。

    让我们看看下面的示例,其中我在 Users Posts .

    用户.rb

    class User  
        has_many_related :posts  
    end
    

    class Post  
        belongs_to_related :user  
    end
    

    现在,当我查看通过MongoHQ接口创建的索引时,我注意到以下两个:

    1. 关键字名称: _id_
      索引字段: _id
      独特: <blank>
      身份证是唯一的吗?如果是的话,为什么不是唯一的设置。如果没有,我该如何设置它?我需要设置吗?

    2. 关键字名称: user_id_1
      user_id
      独特: false
      _1 在它之后。

    3 回复  |  直到 14 年前
        1
  •  3
  •   ceejayoz    14 年前

    对, _id 在MongoDB中总是独一无二的。这是主键,这就是为什么 UNIQUE

        2
  •  2
  •   Lopy    12 年前

    这里非常清楚地描述了MongoDB中的索引 Indexing Overview .

    _身份证

    \u id索引是\u id字段上的唯一索引**,MongoDB默认情况下会在所有集合上创建此索引。无法删除\u id上的索引。

    **尽管id上的索引是唯一的,但是getIndexes()方法不会在mongo shell中打印unique:true。

        3
  •  1
  •   Harshani    12 年前

    如果您没有在MongoDB中手动指定\u id值,那么该类型将被设置为一个特殊的BSON数据类型,该数据类型由一个12字节的二进制值组成。

    12字节的值由4字节的时间戳、3字节的机器id、2字节的进程id和3字节的计数器组成。由于这种设计,这个值有一个合理的高概率是唯一的。