2016-07-21 8 views
0

I私は私のテストデータベースにdb.statsを実行すると、以下を得る合計オブジェクトはMongoDBの内の個々の文書収集カウントの合計と一致しdoesnot、コレクションはカウントも不一致である

db.stats() 
{ 
     "db" : "test", 
     "collections" : 6, 
     "objects" : 1000032, 
     "avgObjSize" : 112.00064797926467, 
     "dataSize" : 112004232, 
     "storageSize" : 175812608, 
     "numExtents" : 17, 
     "indexes" : 8, 
     "indexSize" : 169905456, 
     "fileSize" : 2080374784, 
     "nsSizeMB" : 16, 
     "extentFreeList" : { 
       "num" : 77, 
       "totalSize" : 760766464 
     }, 
     "dataFileVersion" : { 
       "major" : 4, 
       "minor" : 22 
     }, 
     "ok" : 1 
} 

これらは、異なるコレクションです私はここで、各コレクション

db.foo.count() - 1000000 
db.sentences.count() - 7 
db.stackoverflow.count() - 2 
db.system.indexes.count() - 8 
db.system.profile.count() - 2 
上のドキュメント上の別々のカウントがあるテスト・データベースに

db.getCollectionNames(); 
[ 
     "foo", 
     "sentences", 
     "stackoverflow", 
     "system.indexes", 
     "system.profile" 
] 

を持っています

は今、私は2つの質問

1)なぜ私は私だけdb.getCollectionNames()

2)合計で5を持って、私のdb.stats 6()クエリ、などのコレクションを取得していますがありますこの

db.version(); 
3.0.3 

db.serverStatus().storageEngine 
{ "name" : "mmapv1" } 
を理解する上で自分の考えを助けてください1000032

:文書の数は1000000 + 7 + 2 + 8 + = 1000016 2にする必要がありますが、db.statsに、私は "オブジェクト" を取得しています

Addi TIONAL情報

私は今、すべてのデータは、その後、私は、コレクションを作成し、一つだけを挿入し、正しく見せていたのmongoシェルで新しいDBを作成し、db.statsを実行すると、以下のような結果に

use newdb 
db.stats() 
{ 
     "db" : "newdb", 
     "collections" : 0, 
     "objects" : 0, 
     "avgObjSize" : 0, 
     "dataSize" : 0, 
     "storageSize" : 0, 
     "numExtents" : 0, 
     "indexes" : 0, 
     "indexSize" : 0, 
     "fileSize" : 0, 
     "ok" : 1 
} 

を取得記録してから、もう一度私は数に矛盾があります。

db.mycollection.insert({_id:1, name:'Clement Amarnath'}); 

WriteResult({ "nInserted" : 1 }) 

db.stats() 
{ 
     "db" : "newdb", 
 "collections" : 3, 
     "objects" : 5, 
 "avgObjSize" : 60.8, 
     "dataSize" : 304, 
     "storageSize" : 20480, 
     "numExtents" : 3, 
     "indexes" : 1, 
     "indexSize" : 8176, 
     "fileSize" : 67108864, 
     "nsSizeMB" : 16, 
     "extentFreeList" : { 
       "num" : 0, 
       "totalSize" : 0 
     }, 
     "dataFileVersion" : { 
       "major" : 4, 
       "minor" : 22 
     }, 
     "ok" : 1 
} 

db.getCollectionNames() 
[ "mycollection", "system.indexes" ] 

db.system.indexes.count() 
1 
+0

を数えますか? –

+0

@KevinAdistambha - 質問のバージョンとストレージエンジンを更新しました –

答えて

1

収集回数の理由は常に1 db.getCollectionNamesに記載されている実際のコレクションより、コレクションに関する情報を格納する隠しコレクションsystem.namespacesがあります。

これは、合計オブジェクトの違いも解決します。

db.stats() 
{ 
     "db" : "test", 
 "collections" : 6, 
     "objects" : 1000035, 
 "avgObjSize" : 112.0006479773208, 
     "dataSize" : 112004568, 
     "storageSize" : 175812608, 
     "numExtents" : 17, 
     "indexes" : 8, 
     "indexSize" : 169905456, 
     "fileSize" : 2080374784, 
     "nsSizeMB" : 16, 
     "extentFreeList" : { 
       "num" : 77, 
       "totalSize" : 760766464 
     }, 
     "dataFileVersion" : { 
       "major" : 4, 
       "minor" : 22 
     }, 
     "ok" : 1 
} 

コレクション

db.getCollectionNames() 
[ 
     "foo", 
     "sentences", 
     "stackoverflow", 
     "system.indexes", 
     "system.profile" 
] 

コレクションはに記載されているコレクションの

数をカウント0は6 = db.getCollectionNames() is 5 +コレクションsystem.namespaces =コレクション数は6となります。

オブジェクトがどのようなMongoDBのバージョンとどのようなストレージエンジン

db.stackoverflow.count() - 5 
db.foo.count() - 1000000 
db.system.namespaces.count() - 13 
db.system.indexes.count() - 8 
db.system.profile.count() - 2 
db.sentences.count() - 7 
db.stackoverflow.count() - 5 

Document count = 5+1000000+13+8+2+7+5 = 10000035 
関連する問題