计算MongoDB中2次之间的差异

时间:2016-04-13 06:31:52

标签: java mongodb

我有一个名为Last Modified At的字段,其值类似于'2016/04/12 20:24:18'。它不是ISO Date,而是通过MongoDb中的java进程存储的普通String值。   我正在尝试编写一个shell脚本来计算'2016/04/12 20:24:18'和'2016/04/12 16:24:18'之间的差异。差异可以是天或小时,也可以是分钟或秒。我尝试了很多东西,包括转换为ISO日期,但它没有成功。有没有一种简单的方法可以找到像Oracle一样。

任何帮助都会受到赞赏吗?

谢谢, 拉姆

1 个答案:

答案 0 :(得分:0)

我不确定你打算如何运行shell脚本,但是mongo shell可以解析日期(使用Javascript)并按照你的要求计算两个日期之间的时间。假设我们在things数据库中有一个文档如下:

{
    "_id" : ObjectId("570f1e528163383227ace761"),
    "lastModifiedAt" : "2016/04/12 20:24:18"
}

我们可以运行以下脚本来获取文档的lastModifiedDate与硬编码日期之间的差异,例如2016/04/12 16:24:18

db.things.find({}).forEach(function(thing) {
    var date1 = new Date(thing.lastModifiedAt);
    var date2 = new Date('2016/04/12 16:24:18');
    var dateDiff = date1.getTime() - date2.getTime();
    printjson({_id:thing._id,lastModifiedAt:thing.lastModifiedAt,dateDiff:dateDiff});
});

这导致:

{
    "_id" : ObjectId("570f1e528163383227ace761"),
    "lastModifiedAt" : "2016/04/12 20:24:18",
    "dateDiff" : 14400000
}

其中dateDiff是毫秒,14400000 milliseconds = 4 hours

如果您提供有关您打算如何打电话的更多信息,以及第二个日期的来源,我很乐意扩展此答案。