我正在使用3.6.5版的mongodb。我想对一个集合进行查询,然后根据日期对其进行排序。我正在研究一个(我认为是)非常大的数据集,目前该集合中的数据为195064301,并且还在不断增长。
执行过滤器或在单独的查询中进行排序
db.getCollection('logs').find({session: ObjectId("5af3baa173faa851f8b0090c")})
db.getCollection('logs').find({}).sort({date: 1})
返回的结果少于1秒,但是如果我尝试在这样的单个查询中完成结果
db.getCollection('logs').find({session: ObjectId("5af3baa173faa851f8b0090c")}).sort({date: 1})
现在大约需要5分钟才能返回数据。我当时以为这是索引问题,但据我所知,索引似乎很好
> db.logs.getIndexes();
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "client1.logs"
},
{
"v" : 2,
"key" : {
"session" : 1
},
"name" : "session_1",
"ns" : "client1.logs",
"background" : true
},
{
"v" : 2,
"key" : {
"date" : 1
},
"name" : "date_1",
"ns" : "client1.logs",
"background" : true
},
{
"v" : 2,
"key" : {
"user" : 1
},
"name" : "user_1",
"ns" : "client1.logs",
"background" : true
}
]
我还是mongo的新手,我直接在控制台中尝试了那些请求,我也尝试使用reIndex()方法,但没有什么真正的帮助。
所以我希望对此有解决方案。
谢谢。