为什么我的mongodb索引这么大

为什么我的mongodb索引这么大,mongodb,Mongodb,我的mongodb集合中有5700万个文档,即19G数据。 我的索引占用了10G。这听起来正常吗?或者我可能做错了什么!我的主键是2G { "ns" : "myDatabase.logs", "count" : 56795183, "size" : 19995518140, "avgObjSize" : 352.0636272974065, "storageSize" : 21217578928, "

我的mongodb集合中有5700万个文档,即19G数据。 我的索引占用了10G。这听起来正常吗?或者我可能做错了什么!我的主键是2G

{
        "ns" : "myDatabase.logs",
        "count" : 56795183,
        "size" : 19995518140,
        "avgObjSize" : 352.0636272974065,
        "storageSize" : 21217578928,
        "numExtents" : 39,
        "nindexes" : 4,
        "lastExtentSize" : 2146426864,
        "paddingFactor" : 1,
        "flags" : 1,
        "totalIndexSize" : 10753999088,
        "indexSizes" : {
            "_id_" : 2330814080,
            "type_1_playerId_1" : 2999537296,
            "type_1_time_-1" : 2344582464,
            "type_1_tableId_1" : 3079065248
        },
        "ok" : 1
    }

索引大小由被索引文档的数量以及键的大小决定(复合键存储更多信息,并且会更大)。在本例中,_id索引除以文档数为40字节,这似乎相对合理


如果运行db.collection.getIndexes(),可以找到索引版本。如果{v:0},则索引是在Mongo2.0之前创建的,在这种情况下,您应该升级到{v:1}。此过程记录在此处:

您使用的是哪个版本?如果是旧的,可以升级使用新的索引,它们会更小。顺便说一句,如果_id上的索引是2G,这取决于字段中的数据,但对于双字段索引来说似乎可以。@aurelineb,版本是2.0.3,这是最近的版本。除非底座是旧的,否则应该没问题。