Obtendo o timestamp unix em segundos do MongoDB ISODate durante a agregação

Eu estava procurando por este, mas não encontrei nada útil para resolver meu caso. O que eu quero é obter o timestamp unix em segundos do MongoDB ISODate durante a agregação. O problema é que posso obter o carimbo de data / hora do ISODate, mas está em milissegundos. Então, eu precisaria cortar esses milissegundos. O que eu tentei é:

> db.data.aggregate([
    {$match: {dt:2}}, 
    {$project: {timestamp: {$concat: [{$substr: ["$md", 0, -1]}, '01', {$substr: ["$id", 0, -1]}]}}}
  ])

Como você pode ver, estou tentando obter o timestamp do 'md' var e também concatenar esse timestamp com '01' e o número 'id'. O código acima fornece:

{
    "_id" : ObjectId("52f8fc693890fc270d8b456b"),
    "timestamp" : "2014-02-10T16:20:56011141"
}

Então eu melhorei o comando com:

> db.data.aggregate([
    {$match: {dt:2}},
    {$project: {timestamp: {$concat: [{$substr: [{$subtract: ["$md", new Date('1970-01-01')]}, 0, -1]}, '01', {$substr: ["$id", 0, -1]}]}}}
  ])

Agora eu recebo:

{
    "_id" : ObjectId("52f8fc693890fc270d8b456b"),
    "timestamp" : "1392049256000011141"
}

O que eu realmente preciso é de 1392049256011141, portanto, sem os 3 000 extras. Tentei com $ subtrair:

> 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]}]}}}
  ])

O que eu recebo é:

{
    "_id" : ObjectId("52f8fc693890fc270d8b456b"),
    "timestamp" : "1.39205e+009011141"
}

Não é exatamente o que eu esperaria do comando. Infelizmente, o operador $ substr não permite comprimento negativo. Alguém tem outra solução?

questionAnswers(1)

yourAnswerToTheQuestion