好的,我是一个基于SQL Server的DBA,但是有一个使用MongoDB作为核心组件的商业关键应用程序,问题是它变得太大了。 ("大型"并不重要,我试图积极主动!)
具体来说,它有一个"消息日志"超过400 GB的集合,其中日期戳实际存储为2元素数组[Int64,Int32],第0个元素是一些时间度量(第1个元素总是' 0&#39 ;)
例如,一份文件:
{
"_id" : ObjectId("55ef63618c782e0afcf346cf"),
"CertNumber" : null,
"MachineName" : "WORKERBEE1",
"DateTime" : [
NumberLong(635773487051900000),
0
],
"Message" : "Waited 00:00:30.0013381 to get queue lock: Specs to verify",
"ScopeStart" : false
}
只是因为2比1更好,另一个示例文档:
{
"_id" : ObjectId("55ef63618c782e0afcf323be"),
"CertNumber" : null,
"MachineName" : "WORKERBEE2",
"DateTime" : [
NumberLong(635773487056430453),
0
],
"Message" : "Waited 00:00:30.0012345 to get queue lock: Specs to verify",
"ScopeStart" : false
}
我需要弄清楚两件事:
那是什么" DateTime"实际意思?它不是Unix纪元时间(秒或毫秒);即使我去除尾随的0,它代表(毫秒)6/20/2171,所以,除非我们在这里建立时间机器,否则没有意义。如果我去除最后6位数字,则意味着2/23/1990,但即使这似乎也不可能,因为这个应用程序自2000年初以来才存在。 (AFAIK)
假设我们计算出#1,我们是否可以使用某种命令删除(删除)早于的集合中的所有文档,比如1/1/2016?
同样,我是一个SQL人,所以试着用这种方式解释使用类似物,例如: "这就像你的WHERE子句"等等。
PS:是的,我通过Find objects between two dates MongoDB和How do I convert a property in MongoDB from text to date type?这样的问题进行了阅读,但到目前为止还没有任何内容突然出现在我身上。