当我们不知道可用的密钥时,可以使用MongoDB吗?

时间:2012-08-08 12:23:23

标签: mongodb screen-scraping nosql

我们正在抓一个庞大的产品网站。

因此,我们将获得并坚持这么多产品,而且几乎每种产品都有不同的功能/细节。

当然,我们考虑使用NoSQL数据库(MongoDB)来完成这项工作。我们将为每个产品制作一个集合“产品”和一个文档,其中每个键/值对映射到产品的detail_name / detail_description。

由于产品差异很大,我们几乎不知道产品的细节/功能是什么。换句话说,我们不知道可用的密钥。

根据此链接MongoDB case insensitive key search,这是MongoDB的“差距”(我们对可用密钥没有任何了解)。

这是真的吗?如果是,有哪些替代方案?

2 个答案:

答案 0 :(得分:1)

您的关键问题不是MongoDB的问题,只要您可以使用稍微不同的架构和大索引:

通常你会做类似的事情:

{
    productId :..
    details : {
        detailName1 : detailValue1,
        detailName2 : detailValue2;
    }
}

但是如果你这样做,你可以索引详细信息字段:

{
    productId :..
    details : [
        {field : detailName1, value : detailValue1},
        {field : detailName2, value : detailValue2}
    ]
}

请注意,这将导致非常大的索引。不一定是问题,但需要注意的事项。如果您没有为每个细节添加其他字段,则索引将为{details.field:1, details.value:1}(或仅{details:1}

答案 1 :(得分:0)

一旦您删除了所有数据,您就可以检查它以确定文档中是否有一个字段/字段集,您可以添加索引以提高性能。