文档中的mongodb索引或仅跨文档集合

时间:2013-09-18 04:04:12

标签: mongodb

我正在从流API中收集数据,我想创建一个实时分析仪表板。每当新记录出现在流的末尾时,我就会更新下面文档中的计数器。

从设计角度来看。我是否正确使用一个文档,如下例所示?

{
    "_id" : ObjectId("5238beb4d4bed9e444c99978"),
    "counts" : {
        "hours" : {
            "1" : 835,
            "2" : 1007,
            .
                    .
                    .
                    "3" : 174,
         }
}

此方法的好处是只需要将一个文档发送到实时分析仪表板。一年之后,这份文件只有365 * 24个字段,那一年每小时1个字段?

索引怎么样?如果我只有一个文件,我可以在counts.hours上创建一个索引吗?或者索引仅适用于mongodb中的集合?索引是否有助于更快地查找文档或文档中的字段?

如果我可以在counts.hours上创建一个索引,那么计数器增量过程可以更有效地找到正确的小时数(在流的末尾每个新文档)。

1 个答案:

答案 0 :(得分:0)

您可以在文档中嵌入的字段中创建索引。在上面的例子中:

yourCollection.ensureIndex({ 'counts.hours':1 });

索引将帮助您优化查询以根据'counts.hours'字段返回文档。

youCollection.find({ 'count.hours':1 });

您的数据结构设计应取决于您计划执行的查询和更新的类型。在你描述的情况下,我想你会在'hours'对象中添加成员,这样的更新可能会很昂贵,因为MongoDB会针对记录大小在更新中保持稳定的情况优化每个集合记录。