4

建立索引后,我想查看索引的内容。以 MonboDB 文档中的示例为例:

{ "_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++ 驱动程序中做到这一点?

4

2 回答 2

2

@user1883451

您给出的示例是哈希索引,mongodb 内部存储 B-Tree 索引。

因此,您给出的示例并不总是正确的,在某些情况下,mongodb 最终会以这种方式存储,但并非总是如此。[用过于简单的方式理解它很好]

  1. shell 是客户端,它没有显示“关于如何存储索引的内部”
  2. 驱动程序主要与服务器交互(过于简单),它也不知道如何存储东西。

A)如何查看mongodb索引

最好的开始是获取 mongo 源代码并开始使用它。

https://github.com/mongodb/mongo/tree/master/src/mongo/db/带有索引的文件 * https://github.com/mongodb/mongo/tree/master/src/mongo/db/带有索引 的文件树*

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 回答