Obtener la marca de tiempo de Unix en segundos de MongoDB ISODate durante la agregación

Estaba buscando este pero no pude encontrar nada útil para resolver mi caso. Lo que quiero es obtener la marca de tiempo de Unix en segundos de MongoDB ISODate durante la agregación. El problema es que puedo obtener la marca de tiempo de ISODate pero está en milisegundos. Entonces necesitaría cortar esos milisegundos. Lo que he intentado es:

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

Como puede ver, estoy tratando de obtener la marca de tiempo de 'md' var y también concatenar esta marca de tiempo con '01' y el número 'id'. El código anterior da:

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

Luego mejoré el comando con:

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

Ahora obtengo:

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

Lo que realmente necesito es 1392049256011141, así que sin los 3 000 adicionales. Intenté con $ restar:

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

Lo que obtengo es:

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

No es exactamente lo que esperaría del comando. Lamentablemente, el operador $ substr no permite la longitud negativa. ¿Alguien tiene alguna otra solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta