mongodb 上的大数组字段

A field with big array on mongodb

我是Mongo的初学者,我用下面的拓扑结构制作了一个数据库。

一些元数据字段和一个包含实验结果的字段。 实验结果 - 具有约 150,000 个值的整数向量

status = db.DataTest.insert_one(
    {
        "person_num" : num,
        "life_cycle" : cycle,
        "other_metadata" : meta_data,
        "results_of_experiment": big_array
    }
)

我插入了大约 7500 个这样的文档 占用8GB内存,查找操作速度非常慢

我不需要那些实验结果来搜索它们 只需要将它们作为数据块从数据库中检索的选项。 是否有另一种解决方案可以将实验结果存储在数据库中? 使用 "gridfs" 是否与这种情况相关并且不太复杂?

根据您的评论,最常见的查询是

db.DataTest.find( { "life_cycle": { $gt: 800 } }).limit(5)

life_cycle 字段没有索引,MongoDB 被迫进行集合扫描。也就是说,逐一获取和评估您集合中的所有文档。在大型集合中,这将花费很长时间。

MongoDB 不会 自动创建索引。您将不得不观察最常见的查询,并创建索引来支持这些查询。据我所知,任何数据库软件都没有自动创建索引的功能; SQL、否SQL,否则。

数据库索引是一个很深的话题,不能用简短的回答来解释。

话虽如此,如果您在 life_cycle 字段上创建索引,它应该会改善您的查询时间 ,但仅限于您在上面发布的查询 。其他查询类型可能需要不同的索引。您可以在 mongo shell:

db.DataTest.createIndex({life_cycle: 1})

我鼓励您阅读这些页面以了解有关 MongoDB 中的索引的更多信息: