【问题标题】:Display mongodb index contents显示 mongodb 索引内容
【发布时间】:2012-12-06 19:30:16
【问题描述】:

建立索引后,我想查看索引的内容。以 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++ 驱动程序中做到这一点?

【问题讨论】:

  • index 的内容是什么意思?如果您通过标签键为您的集合建立索引,那么集合中的所有标签都包含在您的索引中。我错过了什么吗?
  • @emre nevayeshirazi 我怀疑是我错过了什么。这是一个简单的示例,但如果我尝试更复杂的示例,我想查看索引的内容以确认我的设计目标得到满足或检查是否有任何异常。
  • 您也可以将 .explain() 附加到您的查询中,以查看查询是否正在使用索引。
  • @ranman 是的,我使用。我想看看索引本身,看看为什么没有使用查询。我喜欢亲身体验位、字节和字符,以增加我对幕后发生的事情的理解。
  • 忽略我最后的评论。有一种方法,虽然我已经忘记了,但是有一些适用于 MongoDB 的应用程序可以做到这一点,所以有可能(我认为 MongoVUE 做到了)有人肯定会回答谁记得。 GetIndexes 将显示键,但您不会在寻找该键

标签: c++ mongodb indexing


【解决方案1】:

@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/ 带有 btree* 的文件

B)我假设您只是为了学习目的而尝试这样做。如果您有任何特定的查询,为什么要这样做。

PS: 1.关于内部和源代码的代码更多,文档更少。 2.可以加入http://groups.google.com/group/mongodb-dev

【讨论】:

  • 我想弄清楚当我这样做时发生了什么db.users.find({_id:<keeping this private>}, {_id:1}).count() 2
【解决方案2】:

@ranman 是的,我使用。我想看看索引本身,看看为什么没有使用查询。我喜欢亲身体验这些位、字节和字符,以增加我对幕后发生的事情的理解。 – user1883451 1 小时前

在这种情况下,您应该查看查询优化器和相关的内部结构。

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 2013-04-07
    • 2012-03-03
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多