1

私はmongodb-shellについて学ぼうとして遊んでいますが、コレクションの数がによって示されているものより1つ多いことにmongodb気づきましたdb.stats()db.getCollectionNames()

次に例を示します。

> db.stats();
{   
  "db" : "learn",
  "collections" : 6,
  "objects" : 47, 
  ...
  ...

  "ok" : 1 
}   

> db.getCollectionNames();
[ "hit_stats", "hits", "system.indexes", "system.profile", "unicorns" ]

つまり、 6つのコレクションがあり、asは5つのコレクション名のみをリストしdb.statsていると言います。なぜこの不一致?db.getCollectionNames

4

1 に答える 1

2

system.namespacesコレクション情報を格納するコレクションにはそれ自体が含まれていないため、この不一致がわかります。2つのコレクション(itemsおよびuser)の例:

> db.system.namespaces.find()
{ "name" : "test.system.indexes" }
{ "name" : "test.items.$_id_" }      // index
{ "name" : "test.items" }
{ "name" : "test.users.$_id_" }      // index
{ "name" : "test.users" }

> db.stats()['collections']
4

> db.getCollectionNames()
[ "items", "system.indexes", "users" ]

ご覧のとおりsystem.namespaces、それ自体は含まれていません。db.stats()計算に含まれているため、1つのコレクションの違いがあります。これが理にかなっていることを願っています。

これらのバグレポートSERVER-1162およびSERVER-1308も参照してください。

于 2013-02-03T06:08:36.663 に答える