我正在使用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格式?