Mongodb 在mongo查询中将iso日期转换为时间戳
这是一个问题Mongodb 在mongo查询中将iso日期转换为时间戳,mongodb,date,mongodb-query,aggregation-framework,Mongodb,Date,Mongodb Query,Aggregation Framework,这是一个问题 [ { "$project": { "formattedDate": { "$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" } }, "createdAtMonth": { "$month": "$ceatedAt" }, "rating": 1
[
{
"$project": {
"formattedDate": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"createdAtMonth": { "$month": "$ceatedAt" },
"rating": 1
}
},
{
"$group": {
"_id": "$formattedDate",
"average": { "$avg": "$rating" },
"month": { "$first": "$createdAtMonth" },
}
}
]
我需要时间戳上的日期。如何做到这一点?使用算术聚合运算符,将日期作为分钟,并将新日期(“1970-01-01”)作为子日期
文件
{ "_id": 1, "createdAt": ISODate("2016-09-01T14:35:14.952Z") }
结果是
{ "_id": 1, "timestamp": NumberLong("1472740514952") }
如果您想同时按时间戳和(年、月、日)分组,您可以将时间戳除以一天中的毫秒数,这样它对于每一天(而不是每毫秒)都是唯一的
Mongodb4.0引入了将日期转换为时间戳的聚合
db.collection.aggregate([
{ "$project": {
"createdAt": {
"$toLong": "$createdAt"
}
}}
])
如果要更新时间戳,可以尝试使用它。对于当前日期和时间,请使用以下查询
db.getCollection('movie').update(
{"applicationId":"2b5958d9629026491c30b42f2d5256fa8","type":"shortcut"},
{$set : {userName:"vipin+testkm23052020@applozic.com",created_at: NumberLong(new Date()),"updated_at":NumberLong(new Date()),"docIndex":UUID()}}, {multi:true, upsert: false}
)
但是,我会得到该日期的分组数据吗?如果要按值(年、月、日)分组,则不会。你能在你的问题中提供一些文件和预期结果吗?是的,根据输入请求,我将按月、每周、每天分组。下面是我得到的关于月和周的答案——它是有效的:现在,当我按天分组时,我需要显示时间戳而不是日期字符串。在分组中,我是否必须添加_id:timestampByDay?是的,然后将其分组为唯一的(年、月、日期)。但请注意,在结果输出中,您将不会得到日期的实际时间戳作为
\u id
,但您将得到时间戳除以24*60*60*1000
。
db.collection.aggregate([
{ "$project": {
"createdAt": {
"$toLong": "$createdAt"
}
}}
])
db.getCollection('movie').update(
{"applicationId":"2b5958d9629026491c30b42f2d5256fa8","type":"shortcut"},
{$set : {userName:"vipin+testkm23052020@applozic.com",created_at: NumberLong(new Date()),"updated_at":NumberLong(new Date()),"docIndex":UUID()}}, {multi:true, upsert: false}
)