【发布时间】:2012-07-09 05:21:15
【问题描述】:
我正在尝试存储以下链接:
URL = {
hostname: 'i.imgur.com',
webid: 'qkELz.jpg'
}
我想要这两个字段的唯一且稀疏的复合索引,因为:
-
hostname和webid的组合应该是唯一的。 -
webid将始终使用hostname进行查询。 -
webid不必是全局唯一的。 -
URL不需要有 webid。
但是,当我这样做时,我收到以下错误:
MongoError: E11000 duplicate key error index: db.urls.$hostname_1_webid_1 dup key: { : "imgur.com", : null }
我猜在复合索引的情况下,空值被计算在内,而在常规索引中,它们不是。
有什么办法可以解决这个问题?现在我将分别索引hostname 和webid。
【问题讨论】:
-
对于unique indexes(复合或其他),您不能拥有相同的密钥。您应该能够插入带有 (hostname, null) 的单个记录,但具有相同主机名的第二个记录将是重复的。
标签: mongodb