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

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

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

是的,我可以使用MongDB的sort(),但这意味着我必须根据这个答案所说的每一次sorting集合

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

每分钟排列几百次基本一样的东西会很糟糕,不是吗? 或者是MongoDB非常高效,它可以处理这个?

有人也提到了$ min。 我不知道这是否会帮助,因为我甚至不知道如何比较sort()

好吧,MongoDB是一个以文档为中心的存储JSON文档(真正的BSON,但让我们现在保持简单)。 而堆是专门树的一种forms。 我的假设是你将你的堆build模为一个JSON文档,并且必须在JavaScript中编写插入和检索方法。 我打算多一些,但也许这个研究会帮助你走得更远。

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

  1. 在文档数据库中build模树。
  2. 这里存储一个目录层次结构到一个Key Value存储中。 (是的,我知道MongoDB在技术上不是KV商店,但是在这个post里有很好的信息…)

在做了一些更多的研究之后,我决定在Mongoose模式中添加一个复杂的索引,然后使用MongoDB的find()和sort()。 看到这个更多的细节。