这是查询
{{ user.user_username | uppercase }}
我需要时间戳中的日期。怎么做?
答案 0 :(得分:11)
使用$subtract
算术聚合运算符,将日期作为 minuend ,将new Date("1970-01-01")
作为 subtrahend 。
db.collection.aggregate(
{
$project: { "timestamp": { $subtract: [ "$createdAt", new Date("1970-01-01") ] } }
}
);
对于文件
{ "_id": 1, "createdAt": ISODate("2016-09-01T14:35:14.952Z") }
结果是
{ "_id": 1, "timestamp": NumberLong("1472740514952") }
如果你想按时间戳和(年,月,日)对两者进行分组,你可以将时间戳除以一天中的毫秒数,这样它每天都是唯一的(而不是每一毫秒)
db.collection.aggregate(
{
$project:
{
"timestampByDay":
{
$floor:
{
$divide:
[
{ $subtract: [ "$createdAt", new Date("1970-01-01") ] },
24 * 60 * 60 * 1000
]
}
},
"date": "$createdAt"
}
},
{
$group:
{
"_id": "$timestampByDay",
"date": { $first: "$date" }
}
}
);
答案 1 :(得分:7)
Mongodb 4.0 引入了$toLong
聚合,可将日期转换为时间戳
db.collection.aggregate([
{ "$project": {
"createdAt": {
"$toLong": "$createdAt"
}
}}
])
您可以尝试here
答案 2 :(得分:2)
如果要更新时间戳。当前日期和时间,请使用以下查询。
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}
)