我有一个存储多维数据的集合stats.daily
,但根据type
,它需要其他特定的密钥。
并且还要求这些键(取决于类型)是唯一的。
示例,在这种情况下需要url
密钥,因为type
是“url”:
{
"site": 1,
"type": "url",
"url": "http://google.com/"
"totals": {
"variable1": 12, // incrementing values
"variable2": 32
}
}
另一个例子:
{
"site": 1,
"type": "domain",
"domain": "google.com",
"totals": {...}
}
所以我创建索引:
db.coll.createIndex({site: 1, type: 1, url: 1}, {unique: true, sparse: true});
db.coll.createIndex({site: 1, type: 1, domain: 1}, {unique: true, sparse: true});
它不起作用,返回exception: E11000 duplicate key error index
。
对于唯一索引有意义,但它应该适用于稀疏部分。
完成我需要的最佳解决方案是什么?
修改
在某些情况下,根据type
,可能会有多个相关密钥:
{
"site": 1,
"type": "search",
"engine": "google",
"term": "programming",
"totals": {...}
}
唯一索引将包含这两个新密钥。