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

时间:2015-10-05 02:11:46

标签: node.js mongodb mongoose npm mean-stack

我在我的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 workssort()相比。

2 个答案:

答案 0 :(得分:2)

好的,MongoDB是一个以文档为中心的存储库,存储JSON文档(实际上是BSON,但现在让它保持简单)。并且,Heap是一种专门的树。我的假设是你将把你的堆建模为一个JSON文档,并且必须用JavaScript编写插入和检索方法。我将更多地讨论这个问题,但也许这项研究可以帮助你走得更远。

所以,这里有两项伟大的研究可以帮助你:

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

答案 1 :(得分:0)

在做了一些研究之后,我决定在我的Mongoose模式中添加一个复杂的索引,然后使用MongoDB的find()和sort()。有关详细信息,请参阅this