MongoDB索引和计数子文档

时间:2015-09-08 14:52:10

标签: mongodb

请给我一个建议,我如何解决我的问题。 我有一个包含超过500万份文档的MongoDB集合“卡片”。 这是我的集合中的typycal文档的例子

 {
        "_id" : "300465-905543",
        "products" : "00000",
        "groupQuality" : {
                "defQuality" : 100,
                "summQuality" : 92.22
        }
}

我需要计算一些产品的数量并且具有一定的质量价值,所以我试图使用这样的东西

db.cards.count({groupQuality.defQuality : {$gt : 50, $lte : 100}})

为了提高此操作的速度,我创建了索引{groupQuality.defQuality:1} 这是一个很好的决定,文件计数快速返回,但在添加到名为“groupQuality”的嵌入文档后,还有一组质量我必须为该组创建另一个索引。 新质量组的数量可能很大,所以我不希望每个新质量组都有构建索引。 我开始考虑创建索引{groupQuality:1},这将使嵌入文档中的所有质量组得到畏缩。 MongoDB有可能吗? 如果我可以创建这样的索引,我怎样才能使用某些产品来计算文档,并且在使用index by groupQuality的情况下具有一定的质量价值? 我尝试了下一个查询,但它总是返回0.

db.cards.count({ products : "00000", groupQuality : { defQuality : {$gt : 50, $lte : 100}, summQuality : {$gt : 0, $lte : 100}}})

我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

如果您有嵌套字段,则需要为匹配的每个字段提供完整路径,而不是提供嵌套文档:

db.cards.count({ 
      "products" : "00000", 
      "groupQuality.defQuality" : {$gt : 50, $lte : 100}, 
      "groupQuality.summQuality" : {$gt : 0, $lte : 100}
})