Regarding your first question about the data allocated to indexes:
In MongoDB, when you create an index on a key or set of keys, the data that you have indexed is copied into the index itself. Each index that you create also creates another copy of the data. If you create three indexes using the same key, there will be three additional copies of the indexed data: one in each index.
In addition, when MongoDB creates an index, it leaves spare space in each of the index nodes for growth.
In this way, it's very easy to create indexes that are, in total, much larger than the total data stored in the collection.
Here's an example - I created four indexes on a very small (three document) test collection. You can see for yourself how much more space is used for the indexes than is used by the actual data. Only 312 bytes are used by the documents, while 40880 bytes are used by the indexes.
> db.tb.stats(){ "ns" : "FREE_12793.tb", "count" : 3, "size" : 312, "avgObjSize" : 104, "storageSize" : 8192, "numExtents" : 1, "nindexes" : 5, "lastExtentSize" : 8192, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 40880, "indexSizes" : { "_id_" : 8176, "name_1" : 8176, "name_-1" : 8176, "rank_1" : 8176, "rank_-1" : 8176 }, "ok" : 1}For more information on how MongoDB indexing works, see this page in the MongoDB wiki:
http://www.mongodb.org/display/DOCS/IndexesI note from your screen shot that you have 138 indexes on your 55 collections. It seems likely that this is what's going on for you. You may want to evaluate your indexes to see if there are redundant ones that you can eliminate.
Regarding your second question:
The 'fileSize' field in the output of "db.stats()" is the sum of the on-disk sizes of the files used to store that database. For more information about how MongoDB allocates disk space for databases, see this page in the MongoDB wiki:
http://www.mongodb.org/display/DOCS/Excessive+Disk+SpaceI hope this answers your questions. Have a great day!
-William