我在mongodb中有300000个文档
我的功能大约需要40秒才能显示结果,如何使其更快?
async function getAllWebsite(req, res) {
var nameWebsites = await Article.distinct("website.name");
var idWebsites = await Article.distinct("website.id");
var numberArticle = [];
var result = [];
for(var i = 0; i < nameWebsites.length; i++) {
await Article.aggregate([
{ $match: {"website.id": idWebsites[i]}},
{ $count: "count"}
], function(err, result){
numberArticle.push(result);
});
}
for(var i = 0; i < nameWebsites.length; i++) {
result.push({"id":idWebsites[i], "name":nameWebsites[i], "number_article": numberArticle[i][0].count});
}
var count = result.length;
res.json({
data: result,
total: count,
});
}
这是我的解决方案,但它只显示“正在加载”而不是我的结果,我认为原因是我的功能太慢了
componentDidMount() {
fetch("http://localhost:3030/api/articles/website")
.then(res => res.json())
.then(datas => this.setState({ results: datas.data}))
}
render() {
const { results, isLoading } = this.state;
return <div className="main-content">
{ !isLoading ? (
results.map((website) => {
return(
<div>
<p>Id: {website.id}</p>
<p>Name: {website.name}</p>
</div>
)
})
):(<h3>Loading...</h3>)
}
</div>;
}