MongoDB

MongoDB 知识量:13 - 42 - 129

5.4 其他索引><

TTL索引- 5.4.1 -

MongoDB 的 TTL(生存时间)索引是一种特殊类型的索引,用于自动删除过期的数据。通过创建 TTL 索引,可以指定文档的过期时间,并在文档过期时自动将其从集合中删除。

要创建 TTL 索引,需要在集合上使用 createIndex() 方法,并指定索引类型为 "ttl"。同时,还需要提供过期时间的字段名和时间间隔。例如,假设有一个名为 events 的集合,其中包含一个名为 timestamp 的字段表示事件的创建时间,希望在事件过期后将其删除。可以按照以下方式创建 TTL 索引:

db.events.createIndex(  
  { timestamp: 1 },  
  { expireAfterSeconds: 3600 } // 文档将在 1 小时后过期  
)

上述命令将在 events 集合上创建一个 TTL 索引,其中 timestamp 字段表示事件的创建时间。文档将在 timestamp 字段值加上指定的时间间隔后过期,这里设置为 1 小时。

一旦创建了 TTL 索引,MongoDB 将自动删除过期的文档。不需要手动删除这些文档,MongoDB 将自动处理。

需要注意的是,TTL 索引仅适用于 MongoDB 3.2 及更高版本。另外,TTL 索引不适用于副本集和分片集群中的集合。

使用GridFS存储文件- 5.4.2 -

MongoDB的GridFS是一种用于存储和检索大型文件的规范,它可以解决单个文件大小限制的问题。在MongoDB中,单个BSON文档有16M的限制,而GridFS可以将大文件分割为多个较小的块,每个块作为独立的文档存储,从而突破了这个限制。

使用GridFS存储文件时,通常将文件分成多个块,并将每个块存储在MongoDB的集合中。默认情况下,GridFS将文件划分为255kB的块。这些块和元数据信息(如文件名称、块大小等)分别存储在两个不同的集合中。需要访问文件时,GridFS会根据需要重新组装这些块。

使用GridFS可以处理超过16MB的文件,并且可以轻松地访问文件的部分信息而无需将整个文件加载到内存中。它适用于处理大量的大型文件,如视频、音频、图像、大型文档等。

在命令行工具mongofiles中,可以使用一系列命令来操作GridFS中的文件。例如,可以使用mongofiles put命令将文件上传到GridFS中,使用mongofiles get命令下载文件,使用mongofiles list命令列出所有存储在GridFS中的文件等。