0

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

因此,我们将获得并坚持如此多的产品,并且几乎每个产品都有一组不同的功能/细节。

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

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

根据这个链接MongoDB case insensitive key search,这是 MongoDB 的一个“差距”(我们对可用的键没有一些想法)。

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

4

2 回答 2

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}如果您没有为每个详细信息添加其他字段)。

于 2012-08-08T12:49:35.307 回答
0

抓取所有数据后,您可以对其进行检查以确定文档中是否存在可以添加索引以提高性能的字段/字段集。

于 2012-08-08T12:29:26.907 回答