3

我是 MongoDB 的新手,我已经开始使用它,因为我需要大约 3 亿个文档并且必须对它们执行一些查询。所以我创建了一个结构类似于的集合:

日志集合:

{  LogID, LogName, Version, Serial, Year, Month, Day, Feature { FeatureID, Name, Hour, Minute, second, millisecond  }}

我已使用 C# drvier 将 3 亿个文档插入到集合中。所以每个文档都是一个 BSONDocument 类型。

现在我正在尝试查询Year - 2012的文档数量。查询时间超过15分钟。这是我插入的 3 亿个文档的预期行为还是 mongoDB 有望提供更好的性能?

我也怀疑我在集合中创建的结构是否正确。任何人都可以指导我吗?

查询基本上基于日期或时间和 FeatureID。

4

1 回答 1

4

当然,这不是预期的行为。

我建议进行一些更改:因为您是 mongodb 的新手,所以我假设您的文档没有索引,因此它会进行全面扫描(检查每个文档)。对要进行频繁搜索的键进行索引是一种很好的做法。因此,请执行以下操作:

db.logs.ensureIndex({'Year': 1})
db.logs.ensureIndex({'FeatureID': 1})

另一件事,我建议将此日期/时间键转换为Date()字段,然后执行时间范围查询

但一开始只是试着做一个索引,看看性能。不要忘记解释运算符以了解 mongodb 在幕后所做的事情。

PS在您对查询不同的时间选项表示赞赏之后,我实际上建议转换为 mongo 日期。你可以看看我之前的回答如何做这样的事情(当然你需要修改它来制作你想要的东西,但想法是一样的)。

于 2013-11-07T08:15:22.443 回答