MongoDB中的查询时间花了很长时间?

时间:2013-11-07 07:46:38

标签: mongodb

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

LogsCollection:

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

确定这不是预期的行为。

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

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

另外,我建议将此日期/时间键转换为Date()字段,然后执行time range queries

但最初只是尝试制作索引并查看效果。不要忘记explain操作员,以了解mongodb在幕后做什么。

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