【问题标题】:How do I index large objects in MongoDB? (What is stored in the index? Can I see the contents of the index?)如何在 MongoDB 中索引大型对象? (索引中存储了什么?我可以看到索引的内容吗?)
【发布时间】:2015-02-27 11:16:36
【问题描述】:

如果我将此对象插入 Mongo:

var object = {
  key1 : "some big string",
  key2 : "Another big inner object"
};

自动添加_id

var object = {
   _id : objectId('some id');
   key1 : "some big string",
   key2 : "Another big inner object"
};

在这条新记录中,它的哪些部分被索引(自动或手动)以及该索引存储在哪里(RAM 或磁盘)?如果数据存储在内存中,我如何有效地索引大对象?如何查看已编入索引的内容?

【问题讨论】:

  • 想一想:如果索引仅存储在 RAM 中,则每次重新启动服务器时都必须重新创建它——对于复杂的索引和大型集合——这可能需要几个小时。它们被加载到 RAM 中,随着数据的变化在那里修改并不时同步到磁盘。至于您的其他问题:如果您在提问之前read the quite exhaustive documentation on indices,那就太好了。

标签: mongodb indexing


【解决方案1】:

自动索引的唯一部分是_id 字段。任何其他索引都需要手动索引。

就像 MongoDB 中的所有内容一样,索引被处理为memory-mapped files。这意味着最近使用的索引会缓存在 RAM 中,并在操作系统决定一段时间内不访问它们时休眠到硬盘驱动器。

您可以使用 Mongo shell 命令db.your_collection.stats() 检查您在your_collection 上有哪些索引以及它们有多大。当您想知道每个索引对哪些字段进行索引时,请使用db.your_collection.getIndexes()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2016-04-27
    • 2020-10-09
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多