如何使用mongoose聚合函数计算从currentdate到anotherdate之间的天数

时间:2015-12-02 05:10:59

标签: node.js mongodb mongoose

以下代码仅返回,格式为

Opp.aggregate( [ { $project: { item: 1, day: { $subtract: [ new Date(), new Date("$CreateDate") ] } } } ] , function (err, result) {
             console.log(err);
             console.log(result);
            res.send(result);
            });

[
  {
    "_id": "56569bff5fa4f203c503c792",
    "day": 1449031701920
  }
]

但我只需要获得一天的差异。请给出一些解决方案来解决我的问题。

1 个答案:

答案 0 :(得分:0)

您可以使用以下聚合管道:

[
  {
    $project: {
      item: 1,
      day: { $divide: [{ $subtract: [
              new Date(),
              "$CreateDate"
            ]
          },
          86400000
        ]
      }
    }
  }
]

代码片段以ISO格式更改输入集合CreateDate,假设col是集合名称:

db.col.find().forEach(function(doc){
    doc.CreateDate = new Date(doc.CreateDate);
    db.col.update({_id: doc._id}, {$set: {CreateDate: doc.CreateDate}});
});

每当您将文档插入或更新到此集合中时,请确保以ISO格式插入CreateDate。由于您使用mongoose将CreateDate定义为模式中的字符串,并尝试为此字段传递javascript日期对象。