![](/img/trans.png)
[英]MongoDB : combine some collections into one collection with an extra field
[英]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
}
3個收藏怎么樣?
對象1000004中沒有4個額外的預期?
最后我做db.getCollectionNames()
它顯示[ "student", "system.indexes" ]
什么是system.indexes
?
請有人詳細說明嗎?
我是mongo世界的新手。
當用戶第一次將數據存儲在數據庫中或顯式創建數據庫時,會創建兩個集合。
第一個, system.indexes
保存有關數據庫的各種集合中定義的索引的信息。 您甚至可以使用它來訪問它
db.system.indexes.find()
隱藏的一個, system.namespaces
保存有關數據庫的一些元數據,實際上是從數據庫管理的角度來看所有現有實體的名稱。
雖然未顯示,但您仍可以訪問它:
db.system.namespaces.find()
警告 :不要弄亂他們中的任何一個。 您的數據庫很可能無法使用。 你被警告了!
甚至可能超過這兩個。 有關詳細信息,請閱讀MongoDB文檔中的系統集合 。
實際上,如果您嘗試訪問如上所示的系統數據庫,那么這個變得非常容易。 在一個名為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.