Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose JS,我的记分板实现性能_Javascript_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript Mongoose JS,我的记分板实现性能

Javascript Mongoose JS,我的记分板实现性能,javascript,mongodb,express,mongoose,Javascript,Mongodb,Express,Mongoose,我正在开发记分板(前10名),我在想我是否可以用更好的方式编写代码 代码如下所示: const ScoreBoard = mongoose.model("ScoreBoard", new mongoose.Schema({ nickname:String, score:{type:Number,index:true} }) getTopTenScores(req,res){ ScoreBoard.find() .sort({score:-1}) .limi

我正在开发记分板(前10名),我在想我是否可以用更好的方式编写代码

代码如下所示:

const ScoreBoard = mongoose.model("ScoreBoard",
new mongoose.Schema({
nickname:String,
score:{type:Number,index:true}
})


    getTopTenScores(req,res){
    ScoreBoard.find()
.sort({score:-1})
.limit(10)
.then(r=>res.json(r))
      }
    
我认为这段代码在较大的数据库上可能会失败。我计划将来使用redis,但现在我想继续使用mongodb和mongoose


所以问题是-我可以让代码更高效吗?

在更大的数据库中,您的代码确实会失败。我建议您在
find()
的参数中使用索引,这将提高速度


除此之外,如果你想得到一个简单的Javascript对象,而不是一个猫鼬对象,你可以在
find()
之后使用
lean()

是什么让你认为这会在更大的数据库上失败?我有一种感觉,如果数据量更大,例如100万,那么按分数排序将花费太长的时间。或者这段代码可以处理更多的数据吗?这就是你定义索引的目的,不是吗?我知道索引可以加快排序,但是对于大量的数据,索引不是太慢了吗?或者,我不完全理解索引是如何工作的吗?它不需要对任何数据进行排序,索引已经排序了。它所需要做的就是阅读最上面的10个条目。感谢您提到切分的概念。我读了一些关于它的书。总而言之,在添加索引和lean()方法之后,这段代码可以正常工作吗?例如,对于一百万个文档,即使使用索引进行排序也不会要求太高吗?坦率地说,我不记得这里所有的优化方法,这是一个非常有用的链接。100万取决于硬件,您可以使用分片将1 mil DB拆分为10 mil DB,每个100k,例如,带有字母的名称将出现在第一个DB中,等等,当您需要某些内容时,只需查询正确的DB即可