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