0
我有超过2000万的记录,像这样的集合:增加MongoDB的性能比较与排序
{
"_id" : ObjectId("58f8af0f65fc0a38e40a478f"),
"text" : "Example text",
"postdate" : NumberLong("1492692751921"),
"cId" : "58e3cdbe29c8a54394c52c74",
}
和索引这样的:{postdate : -1}
当然会有更多的领域,但是这是最重要。现在我想要这样查询:
db.coll.aggregate([
{ "$match" : {
"$and" : [
{ "postdate" : { "$gt" : 0}} ,
{ "postdate" : { "$lt" : 1497469601983}} ,
{ "cId" : "58e3cdbe29c8a54394c52c74"}
]
}},
{ "$sort" : { "postdate" : -1}},
{ "$limit" : 20}]);
但这需要很长时间。我想知道我是否可以提高这个表现。我需要这个查询来更快地工作。我能做什么?
谢谢
为什么你在这里使用聚集,在这之后有什么你想要做的吗?把一个索引放在''postdate''上,但也可以用一个普通的查询来测试。同样假设你的''postdate''字段代表了自纪元以来的毫秒数,那么它也不可能有低于0的值,所以应该暗示下边界。 '.find({“postdate”:{“$ lt”:1497469601983},“cId”:“58e3cdbe29c8a54394c52c74”})。sort({“postdate”:-1})。limit(1)'。最重要的是,在你不需要的地方停止使用'$和'。除非另有明确说明,否则所有MongoDB查询表达式都已经**和argumemts。 –
嗨用户6586661;如果你有性能问题,那么你的第一步应该是使用[解释函数](https://docs.mongodb.com/manual/reference/explain-results/)来查看服务器用于查询的查询计划,每个查询阶段需要多长时间。这将帮助您确定它在哪里缓慢运行,并通知您可能进行的更改。 –