由于这个问题,我是否需要更改mongoDB的架构?

时间:2019-07-09 12:42:13

标签: mongodb performance database-design mongodb-query

我正在使用MongoDB数据库,其中每个数据行都类似:

{
"_id" : ObjectId("5c1bbcfbfe78c90007af2676"),
"_class" : "dasdas.dsadas.eewrewrdsfsa.dsad",
"deviceid" : 943955,
"checkid" : "23303140",
"dsc247" : 1,
"description" : "Windows-Dienst-Überprüfung - SQL Server VSS Writer",
"checkstatus" : "testerror",
"extra" : "96 fortlaufende Fehler, Öffnen des Dienstes nicht möglich",
"datetime" : ISODate("2018-12-04T15:55:00.000Z"),
"consecutiveFails" : 96,
"emailalerts" : 1,
"smsalerts" : 0,
"emailrecoveryalerts" : 1,
"smsrecoveryalerts" : 0,
"servertime" : ISODate("2018-12-20T16:02:02.000Z")
}

数据库具有以下索引:

_id
datetime
deviceid_description
deviceid_description_checkstatus_datetime

这些行按 datetime 排序,但是我想基于 servertime 字段访问数据。问题在于,即使是这样的简单查询:

db.check.find(
    {
           servertime: new ISODate("2018-12-21 23:17:30.000Z")
    }        
).limit(1)

花费 30秒来返回结果,如果我尝试执行超出此范围的任何查询,则将永远花费!!

但是,如果我根据数据时间进行上述查询,它会在 0.016秒内完成!!

有没有办法解决这个问题?!

是否必须更改数据库模式?这将是多么困难和耗时?!

我使用Robo mongo框架。有没有更快的平台来访问数据?

数据库具有SQL特性,如何将其转换为SQL格式?

0 个答案:

没有答案