【问题标题】:mongodo index within a document or only across a document collection文档内或仅跨文档集合的 mongodb 索引
【发布时间】:2013-09-18 14:01:05
【问题描述】:

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

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

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

这种方法的好处是只需将一个文档发送到实时分析仪表板。同样在一年后,该文档将只有 365 * 24 个字段,该年每小时 1 个?

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

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以在文档中嵌入的字段中创建索引。在上述情况下:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      相关资源
      最近更新 更多