$ limit и $ project для логического расчета - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно использовать ISODate с самой ранней отметки времени и рассчитать возраст документа в моей коллекции с использованием сегодняшнего возраста.Мне нужно сделать это для 10 лучших документов.Мне удалось извлечь 10 лучших документов с самыми ранними временными метками, но я не могу использовать эти данные и выполнить математический расчет.

db.collection.aggregate([
    { $group: { _id: "$title" }},
    {$sort:{timestamp:1}}, 
    { $group: 
            {
              _id:"$title",
              test:{$first:"$timestamp"}
            }
    },
    {
     $project:{
            age_Days: { $divide: [{$subtract: [ new Date(), "$test" ] }, (24*60*60*1000)] } ,
            age_Years: { $divide: [{$subtract: [ new Date(), "$test" ] }, (365*24*60*60*1000)] } 
            },

    },
    {$limit:10}
]);

Вот как я хочу, чтобы моя логика выглядела, но я получаю только "нулевые" ответы.

1 Ответ

0 голосов
/ 21 мая 2018

, если кто-то в будущем наткнется на эту проблему.

db.collection.aggregate([ 
    { $sort: { timestamp: 1 } },
    { $group: { 
            _id: "$title", test:{$first:"$timestamp"} }
            },
    {
     $project:{
            age_Years: { $divide: [{$subtract: [ new Date(), "$test" ] }, (365*24*60*60*1000)] }
            }

    },
    {$sort:{age_Years:-1}}, 
    {$limit:3}
],
{ allowDiskUse : true }
);
...