4

索引を作成した後、索引の内容を表示したいと考えています。MonboDB docs から例を挙げて説明します。

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

次に、tags フィールドのインデックスには次の値が含まれます。

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

db.weather._tags_.find()したがって、コマンドを実行して、たとえば、上記の値を表示したいと考えています。

質問:そのようなシェル コマンドは存在しますか? または、C++ ドライバーでこれを行う方法はありますか?

4

2 に答える 2

2

@ユーザー1883451

あなたが例を挙げたのはハッシュインデックスであり、mongodbは内部的にBツリーインデックスを保存します。

したがって、あなたが与えた例は常に正しいとは限りません.mongodbは最終的にそのように保存される場合もありますが、常にそうとは限りません. 【大雑把な理解で結構です】

  1. シェルはクライアントであり、「インデックスの保存方法に関する内部」は表示されません
  2. ドライバーは主にサーバーとやり取りしています (単純化しすぎています)。

A) mongodb インデックスの表示方法

最良のスタートは、mongo のソース コードを取得して、それを試してみることです。

https://github.com/mongodb/mongo/tree/master/src/mongo/db/ インデックス付きファイル* https://github.com/mongodb/mongo/tree/master/src/mongo/db/ ファイル付きbtree*

B)私はあなたが学習目的のためだけにやろうとしていると思います. 特定のクエリがある場合は、なぜそのクエリを実行したいのか.

PS : 1. 内部とソース コードに関するコードが多く、ドキュメントが少ない。2. http://groups.google.com/group/mongodb-devに参加できます

于 2012-12-06T21:40:17.767 に答える
0

@ranman はい、私が使用しています。たとえば、クエリが使用されていない理由を確認するために、インデックス自体をのぞき見したいと思います。ボンネットの下で何が起こっているかについての理解を深めるために、いわばビットとバイトと文字を手に入れるのが大好きです。– user1883451 1時間前

その場合は、クエリ オプティマイザーと関連する内部構造を確認する必要があります。

于 2012-12-06T21:46:38.957 に答える