3

我想在我的 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_"
    }
]

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

4

1 回答 1

2

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

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

稀疏索引仅包含具有索引字段的文档的条目。任何缺少该字段的文档都不会被索引。由于缺少值时缺少文档,因此索引是“稀疏的”。

也可以看看:

希望有帮助。

于 2013-05-14T18:09:19.987 回答