最近お仕事でMongoDB 2.6を触ってるのですが、
よくわからないモノに遭遇したのでメモ。
とりあえず、新規DBにCappedCollectionを作成。
> mongo
> show dbs;
admin (empty)
local 0.078GB
> use DB;
switched to db DB
> show collections;
// コレクションなし
> db.createCollection("Col", { capped : true, size : 16384 });
{ "ok" : 1 }
これでコレクションの作成完了。
この時点でインデックスを管理するコレクションが作られているはずなので、
コレクションの総数は 2 のはずである。
> show collections;
Col
system.indexes
うん、2つだ。
で、ここでdb.stats()
を実行。
> db.stats();
{
"db" : "DB",
"collections" : 3,
"objects" : 4,
"avgObjSize" : 80,
"dataSize" : 320,
"storageSize" : 32768,
"numExtents" : 3,
"indexes" : 1,
"indexSize" : 8176,
"fileSize" : 67108864,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}
… collections が 3。
このコレクションひとつは一体どこへ…?
これを仮に「隠されたコレクション」と名づけて進めてみる。
DB全体でのobjects が4。これきっと公開情報だけじゃ数が合わないよね。
> db.Col.stats()
{
"ns" : "DB.Col",
"count" : 0,
"size" : 0,
"storageSize" : 16384,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 16384,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"capped" : true,
"max" : NumberLong("9223372036854775807"),
"ok" : 1
}
> db.system.indexes.Stats();
{
"ns" : "DB.system.indexes",
"count" : 1,
"size" : 112,
"avgObjSize" : 112,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 0,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 0,
"userFlags" : 1,
"totalIndexSize" : 0,
"indexSizes" : {
},
"ok" : 1
}
count が 0 と 1。
4 - (0 + 1) = 3
隠されたコレクションはどうやら3つのドキュメントを持っているらしい。
dataSizeの差を見てみる。
320 - (0 + 112) = 208
3つで208のサイズ。等分はできない。
storageSizeの差。
32768 - (16384 + 8192) = 32768 - 24576
= 8192
8192 byte 取ってるらしい。
まとめると、
隠されたコレクション
storageSize : 8192
size : 208
count : 3
そのうち追記します。
何かわかる方とかいらっしゃいましたらコメントをお願い致します。