Mongodb如何从时间戳字段找到多少天前

时间:2015-04-25 11:53:50

标签: mongodb timestamp days

我试图找到使用时间戳的天数,但我不知道该怎么做?

{
    "_id" : ObjectId("5504cc9ddd5af617caae30b3"),
    "session_id" : 1,
    "Timestamp" : "2014-04-07T10:51:09.277Z",
    "Item_ID" : 214536502,
    "Category" : 0
}

如何使用字段计算天数"时间戳" ?

1 个答案:

答案 0 :(得分:3)

您可以在时间戳字段中使用$projectnew Date()pipe = { "$project" : { "_id" : 1, "daySince" : { "$divide" : [ { "$subtract" : [ new Date(), new Date("$Timestamp") ] }, 86400000 ] } } } ,然后进行计算,如下所示:

db.collection.aggregate(pipeline=pipe)

计算:

ISODate

由于时间戳不是60*60*24*1000个对象,您只需要将其转换为1,然后减去当前日期,并将结果除以new Date(),那么这将是今天以来的天数。

您还可以将Timestamp更改为您需要比较的内容。

更新

由于我认为mapReduce格式可能格式不正确,您可以使用// in your mongo shell using the db var mapTimestamp = function() { daySince = parseInt(new Date() - new Date(this.Timestamp) / 86400000); emit(this._id, daySince); } // since you map reduce only on one field, there's really no need for this var reduceTimestamp = function (key, value) { return value; } db.collection.mapReduce(mapTimestamp, reduceTimestamp, {out: "sample"}) 函数来计算:

db.sample.find()

显示结果:

{{1}}