繁体   English   中英

MongoDB额外收藏

[英]MongoDB extra Collections

我有一个名为index的数据库只有一个名为student的集合。

当我触发查询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个收藏怎么样?

  2. 对象1000004中没有4个额外的预期?

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

什么是system.indexes

请有人详细说明吗?

我是mongo世界的新手。

神秘的2个系列

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

第一个, system.indexes保存有关数据库的各种集合中定义的索引的信息。 您甚至可以使用它来访问它

db.system.indexes.find()

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

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

db.system.namespaces.find()

警告 :不要弄乱他们中的任何一个。 您的数据库很可能无法使用。 你被警告了!

甚至可能超过这两个。 有关详细信息,请阅读MongoDB文档中的系统集合

神秘的4个物体

实际上,如果您尝试访问如上所示的系统数据库,那么这个变得非常容易。 在一个名为foobardb的数据库中, 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个额外的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM