Mongoose中哪个SchemaType最适合时间戳?

我正在使用Mongoose,MongoDB和Node。

我想定义一个模式,其中一个字段是date\时间戳。

我想使用此字段以返回在过去5分钟内更新的所有logging。

由于在Mongoose我不能使用Timestamp()方法的事实我明白,我唯一的select是使用下面的Javascript方法:

time : { type: Number, default: (new Date()).getTime() } 

这可能不是查询一个庞大的数据库的最有效的方法。 我真的很感激,如果有人可以分享一个更有效的方式来实现这一点。

有没有什么办法可以用Mongoose来实现这一点,并能够使用MongoDB的时间戳?

编辑 – 2016年3月20日

mongoose现在支持集合的时间戳 。

请考虑下面的@bobbyz的答案。 也许这是你在找什么。

原始答案

Mongoose支持Datetypes(基本上是一个时间戳):

 time : { type : Date, default: Date.now } 

有了上面的字段定义,任何时候你用一个未设置的time字段保存一个文档,Mongoose将用当前时间填充这个字段。

来源: http : //mongoosejs.com/docs/guide.html

当前版本的Mongoose(v4.x)具有时间戳作为模式的内置选项:

 var mySchema = new mongoose.Schema( {name: String}, {timestamps: true} ); 

此选项添加了使用Date进行时间戳的updatedAtupdatedAt属性,并为您完成所有工作。 updatedAt更新文档时,都会更新updatedAt属性。 架构时间戳文档。

我想使用这个字段为了返回最近5分钟内更新的所有logging。

这意味着每次保存对象时都需要将date更新为“now”。 也许你会发现这个有用的: Moongoose创build修改的插件