如何将 MongoDB 集合中的数据存储为堆?

Posted

技术标签:

【中文标题】如何将 MongoDB 集合中的数据存储为堆?【英文标题】:How to store data in a MongoDB collection as a heap? 【发布时间】:2016-01-01 14:58:25 【问题描述】:

我正在为我的 Web 应用程序使用 MEAN 堆栈,其中包含可以作为堆结构最有效地存储和访问的数据。我的应用程序将进行多次调用(大约每分钟几百次)来检索集合中的最小元素并每次独立使用它。由于我想使用 Node.js 和 MongoDB(因此是 MEAN 堆栈),我想知道如何将数据构建为堆。

理想情况下,我想以某种方式将npm's heap 合并到 MEAN 堆栈的 MongoDB 和/或 Mongoose 中。但我不确定在哪里以及如何。

是的,我可以使用 MongDB 的 sort(),但这意味着我必须每次都对集合进行排序,基于 answer says

db.the_collection.find().sort(the_field: 1).limit(1) 

每分钟对基本相同的事物进行数百次分类会很糟糕,不是吗?或者 MongoDB 是否非常高效以至于它可以处理这个问题?

有人还提到了 $min。我不知道它是否会有所帮助,因为我什至不知道 how it works 与 sort() 相比。

【问题讨论】:

【参考方案1】:

在做了更多研究之后,我决定在我的 Mongoose 模式中放置一个复杂的索引,然后使用 MongoDB 的 find() 和 sort()。详情请见this。

【讨论】:

【参考方案2】:

好的,MongoDB 是一个以文档为中心的存储库,用于存储 JSON 文档(实际上是 BSON,但现在让我们保持简单)。而且,Heap 是一种特殊的树。我的假设是您将堆建模为 JSON 文档,并且必须在 javascript 中编写插入和检索方法。我会再玩这个,但也许这项研究会帮助你走得更远。

所以,这里有两个很好的研究可以帮助你:

    在文档数据库中建模树here。 在键值存储here 中存储目录层次结构。 (是的,我知道 MongoDB 在技术上不是 KV 存储,但帖子中有很好的信息...)

【讨论】:

好的,这可能也很有趣...github.com/thauburger/js-heap/blob/master/package.json github.com/thauburger/js-heap 比 npmjs.com/package/heap 好多少? 我不能这么说。仅评论其他研究/发现。我打算两个都试一下,看看哪个更好……

以上是关于如何将 MongoDB 集合中的数据存储为堆?的主要内容,如果未能解决你的问题,请参考以下文章

将 mongodb 集合中的文档副本存储在字典列表中,并使用此数据而不是查询数据库是个好主意吗?

Trello 如何在 MongoDB 中存储数据? (每板收集?)

MongoDB 插入文档

mongoDB 学习六

如何将 mongodb 集合中的数据加载到 pandas 的 DataFrame 中?

如何使用graphql将mongodb中多个集合中的数据传递到1个反应表