MongoDB:如何使用可选键创建稀疏+唯一索引?

时间:2015-07-20 22:03:32

标签: mongodb indexing

我有一个存储多维数据的集合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": {...}
}

唯一索引将包含这两个新密钥。

0 个答案:

没有答案