我们正在抓一个庞大的产品网站。
因此,我们将获得并坚持这么多产品,而且几乎每种产品都有不同的功能/细节。
当然,我们考虑使用NoSQL数据库(MongoDB)来完成这项工作。我们将为每个产品制作一个集合“产品”和一个文档,其中每个键/值对映射到产品的detail_name / detail_description。
由于产品差异很大,我们几乎不知道产品的细节/功能是什么。换句话说,我们不知道可用的密钥。
根据此链接MongoDB case insensitive key search,这是MongoDB的“差距”(我们对可用密钥没有任何了解)。
这是真的吗?如果是,有哪些替代方案?
答案 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)
一旦您删除了所有数据,您就可以检查它以确定文档中是否有一个字段/字段集,您可以添加索引以提高性能。