我想在我的 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()
, I got:
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "tracking.sessions",
"name" : "_id_"
}
]
对我来说,它看起来不像是重复的钥匙。我在这里做错了什么?
MongoDB 告诉您,您有多个文档(多个)具有相同的内容fb_id
and ts
价值观,null
价值观。换句话说,有些文件没有fb_id
and ts
字段。因此,它违反了整个集合的唯一约束。
作为解决方法,您应该看看sparse索引。引用自文档:
稀疏索引仅包含具有以下特征的文档的条目
索引字段。任何缺少该字段的文档都不是
索引。索引是“稀疏”的,因为当
值缺失。
也可以看看:
- mongo 中的稀疏索引和空值
- 为什么 DuplicateKeyError: E11000 重复键错误索引: test.test.$notification_1 dup key: { : null }
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)