【问题标题】:Error while setting up compound index设置复合索引时出错
【发布时间】:2013-05-09 02:54:52
【问题描述】:

我想在我的 mongoDB 中为 fb_id 和 ts 设置复合索引。所以,我做到了:

PRIMARY> db.sessions.ensureIndex( { fb_id: 1, ts: 1 }, { unique:true } );

但我收到以下错误:

E11000 duplicate key error index: tracking.sessions.$fb_id_1_ts_1  dup key: { : null, : null }

所以我使用db.sessions.getIndexes()检查了这个集合中的索引,我得到了:

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "ns" : "tracking.sessions",
        "name" : "_id_"
    }
]

对我来说,它看起来不像是重复键。我在这里做错了什么?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    MongoDB 告诉您,您有多个文档(不止一个)具有相同的 fb_idts 值,null 值。换句话说,有些文档没有fb_idts 字段。因此,它违反了整个集合的唯一约束。

    作为一种解决方法,您应该查看sparse 索引。引用自文档:

    稀疏索引只包含具有 索引字段。任何缺少该字段的文档都不是 索引。由于缺少文档,索引是“稀疏的” 缺少值。

    另见:

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2014-05-07
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      相关资源
      最近更新 更多