$ limit和$ project用于逻辑计算

时间:2018-05-21 01:57:05

标签: mongodb mongodb-query aggregation-framework

我需要从最早的时间戳使用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}
]);

这就是我希望我的逻辑看起来像什么,但我只是得到" null"答案。

1 个答案:

答案 0 :(得分:1)

如果将来有人遇到这个问题。

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 }
);
相关问题