MongoDB
排序功能非常接近。你能在与数据库本身无关的对象和/或数组上使用它们吗?
var mongo = require('mongodb'),
Server = mongo.Server,
Db = mongo.Db,
sortingFun = mongo.internalSortFilterFunction(); // By the miracle of imagination, this is a made-up line.
例如,this awesome little node project称为sift
: MongoDB启发了数组过滤。但是有更多类似的工具,不同的意见和项目合并和消失。
考虑到它的受欢迎程度,MongoDB
很可能会流连忘返。出于这个原因,加上额外的奖励是完全相似而不是非常相似,我想知道node-mongodb中的特定对象/模型/函数是否可以从require('mongodb')
专门用于使用排序和过滤功能在自定义对象/数组上。
答案 0 :(得分:0)
排序是在mongo服务器而不是客户端完成的。它也不是特别快 - 大型集合应该预先排序,但这是另一个问题。
mongo服务器是用C ++编写的,使用自定义类型,与JS引擎分开,称为BSON。
因此,如果客户端上没有针对javascript的排序实现,这将是一个荒谬的功能,则无法使用服务器排序。
编辑:如果你真的真的想要使用排序,性能被诅咒,你可以将js对象插入数据库,有效地将它们转换为mongo集合中的BSON。然后对它进行排序并从数据库中提取它。每次调用该函数时都需要重新创建索引等。 Mongodb也拒绝对大型集合sans索引进行排序(我认为限制在大约1000左右)
PS。我还没看过来源。我无法想象一个JS实时,无索引排序,它匹配MongoDB排序esp的速度。分发时(分片)。但是你可以在C ++中编写node.js模块,如果BSON与V8 JS对象足够相似(不会这么认为),你可以移植它。我不会走这条路,因为与在JS中重新实现它相比,它可能不会是一个大的速度提升,这将是一个更容易创建和维护的重新实现。