2012-12-06 69 views
4

創建索引後,我想查看索引的內容。以一個例子說明從MonboDB文檔:顯示mongodb索引內容

{ "_id" : ObjectId("..."), 
"name" : "Warm Weather", 
"author" : "Steve", 
"tags" : [ "weather", "hot", "record", "april" ] } 

然後在標籤領域的指數將有下列值:

{ tags: "weather" } 
{ tags: "hot" } 
{ tags: "record" } 
{ tags: "april" } 

所以,我想運行一個命令,比方說,db.weather._tags_.find()顯示說的價值。

問題:這樣的shell命令是否存在?或者有沒有辦法在C++驅動程序中執行此操作?

+0

你指的是什麼內容?如果你通過標籤鍵索引你的集合,那麼集合中的所有標籤都包含在你的索引中。我錯過了什麼? –

+0

@emre nevayeshirazi我懷疑是我失去了一些東西。這是一個簡單的例子,但如果我嘗試更復雜的例子,我想查看索引的內容以確認我的設計目標已經達到或檢查任何異常情況。 –

+0

您還可以將.explain()附加到您的查詢以查看查詢是否正在使用索引。 – ranman

回答

2

@ user1883451

你給什麼例子是哈希索引,MongoDB的內部存儲的B樹索引。

所以你給出的例子並不總是正確的,mongodb在某些情況下最終以這種方式存儲,但並不總是如此。 [這是好的瞭解它過於簡單化的方式]

  1. 殼客戶端,它不顯示「內部的指標是如何存儲」
  2. 驅動程序主要與服務器(簡單化)的交互,也不知道如何存儲東西。

A)如何查看mongodb的索引

最佳起動是採取蒙戈源代碼,並開始使用它。

https://github.com/mongodb/mongo/tree/master/src/mongo/db/文件索引* https://github.com/mongodb/mongo/tree/master/src/mongo/db/文件與B樹*

B)我假設你正在嘗試只是爲了學習的目的做。如果你有任何具體的查詢,爲什麼你想這樣做發射查詢。

PS: 1.內部代碼和源代碼有更多的代碼和更少的doc。 2.你可以加入http://groups.google.com/group/mongodb-dev

+0

我試圖找出當我做db.users.find時發生了什麼({_ id:<保留這個私有>},{_id:1})。count() 2''' –

+0

而且是,它返回2應該是唯一的_id。 –

0

@ranman是的,我使用。我想窺探索引本身,看看爲什麼,例如,查詢沒有被使用。我喜歡讓我的手掌握位,字節和字符,因爲它增加了我對引擎蓋下發生的事情的理解。 - user1883451 1小時前

在這種情況下,你應該看看查詢優化器以及相關的內部。