我正在尝试存储以下链接:
URL = {
hostname: 'i.imgur.com',
webid: 'qkELz.jpg'
}
Run Code Online (Sandbox Code Playgroud)
我想在这两个字段上有一个唯一且稀疏的复合索引,因为:
hostname而且webid应该是独一无二的.webid永远都会被查询hostname.webid 不必是全球唯一的.URL不需要有webid.但是,当我这样做时,我收到以下错误:
MongoError: E11000 duplicate key error index: db.urls.$hostname_1_webid_1 dup key: { : "imgur.com", : null }
Run Code Online (Sandbox Code Playgroud)
我想在复合索引的情况下,空值被计算,而在常规索引中,它们不是.
有什么办法摆脱这个问题?现在我只是要索引hostname和webid独立.
请记住,mongodb每个查询只能使用一个索引(它不会将索引连接在一起,以便对两个具有更快单独索引的字段进行查询).
也就是说,如果您想尝试检查唯一性,可以在插入之前从应用程序执行查询(这只能部分解决问题,因为查询时和插入时之间存在差距).
您可能希望针对筛选索引对此JIRA问题进行投票,这可能会对您的用例有所帮助:https: //jira.mongodb.org/browse/SERVER-785
| 归档时间: |
|
| 查看次数: |
2190 次 |
| 最近记录: |