我正在尋找這個,但找不到有用的東西來解決我的情況。我想要的是在聚合過程中,在MongoDB ISODate之外獲得unix時間戳。問題是,我可以從ISODate中獲取時間戳,但是它的時間間隔爲毫秒。所以我需要削減那些毫秒。我已經試過是:在聚集過程中獲取MongoDB ISODate的秒數unix時間戳
> db.data.aggregate([
{$match: {dt:2}},
{$project: {timestamp: {$concat: [{$substr: ["$md", 0, -1]}, '01', {$substr: ["$id", 0, -1]}]}}}
])
正如你可以看到,我試圖讓戳出來的「MD」 var和也與「01」和「ID」號碼拼接這個時間戳。上面的代碼給出:
{
"_id" : ObjectId("52f8fc693890fc270d8b456b"),
"timestamp" : "2014-02-10T16:20:56011141"
}
然後我改善了與命令:
> db.data.aggregate([
{$match: {dt:2}},
{$project: {timestamp: {$concat: [{$substr: [{$subtract: ["$md", new Date('1970-01-01')]}, 0, -1]}, '01', {$substr: ["$id", 0, -1]}]}}}
])
現在,我得到:
{
"_id" : ObjectId("52f8fc693890fc270d8b456b"),
"timestamp" : "1392049256000011141"
}
我真正需要的是1392049256011141所以沒有3個額外的000。我試過用$減號:
> db.data.aggregate([
{$match: {dt:2}},
{$project: {timestamp: {$concat: [{$substr: [{$divide: [{$subtract: ["$md", new Date('1970-01-01')]}, 1000]}, 0, -1]}, '01', {$substr: ["$id", 0, -1]}]}}}
])
我得到的是:
{
"_id" : ObjectId("52f8fc693890fc270d8b456b"),
"timestamp" : "1.39205e+009011141"
}
不完全是我所期望的命令。不幸的是,$ substr運算符不允許負長度。有沒有人有任何其他解決方案?