MongoDB 额外 Collections

MongoDB extra Collections

我有一个名为 index 的数据库,其中只有一个 collection 名为学生。

当我触发查询时 db.students.find({}).count()

它显示了 1000000 个文档。

但是当我使用 db.stats() 时,它显示的结果如下:-

{
        "db" : "index",
        "collections" : 3,
        "objects" : 1000004,
        "avgObjSize" : 59.95997216011136,
        "dataSize" : 59960212,
        "storageSize" : 87420928,
        "numExtents" : 14,
        "indexes" : 1,
        "indexSize" : 32458720,
        "fileSize" : 520093696,
        "nsSizeMB" : 16,
        "ok" : 1
}
  1. 3 collection怎么办?

  2. No of object 1000004 这比预期多了 4 ?

最后我做到了 db.getCollectionNames() 它显示 [ "student", "system.indexes" ]

什么是 system.indexes

请大家详细说明一下?

我是 mongo 的新手。

神秘2合集

当用户第一次在数据库中存储数据或显式创建数据库时,会创建两个集合。

第一个,system.indexes 包含有关在数据库的各种集合中定义的索引的信息。您甚至可以使用

访问它
db.system.indexes.find()

隐藏的 system.namespaces 包含有关数据库的一些元数据,实际上是从数据库管理的角度来看所有现有实体的名称。

虽然没有显示,但您仍然可以访问它:

db.system.namespaces.find()

警告:不要fiddle与它们中的任何一个一起使用。您的数据库很可能变得不可用。您已被警告!

可能不止这两个。阅读 System Collections in the MongoDB docs 了解详情。

神秘的4个物体

实际上,如果您尝试过如上所示访问系统数据库,这将变得非常容易。在名为 foobardb 的数据库中,集合 foo_id 上的默认索引,查询 system.indexes 将给出如下结果(美化):

{
  "v" : 1,
  "key" : {
    "_id" : 1
  },
  "name" : "_id_",
  "ns" : "foobardb.foo"
}

请注意,这是单个文档。第二个查询的美化输出如下所示:

{ "name" : "foobardb.foo" }
{ "name" : "foobardb.system.indexes" }
{ "name" : "foobardb.foo.$_id_" }

在这里,我们有三个文件。所以我们在元数据中有 4 个额外的文档。