我正在使用Mongoose,MongoDB和Node.js。
我想定义一个模式,其中一个字段是日期\时间戳。
我想使用此字段,以返回在过去5分钟内更新的所有记录。
由于在Mongoose中我不能使用Timestamp()方法,我明白我唯一的选择是使用以下JavaScript方法:
time : { type: Number, default: (new Date()).getTime() }
这可能不是查询大型数据库的最有效方法。有没有更有效的方法来实现这一点。
有没有一种方法可以用Mongoose实现这一点,并能够使用MongoDB时间戳?
9条答案
按热度按时间k2arahey1#
2016年3月20日星期一
Mongoose现在支持收藏的时间戳。
请考虑answer of @bobbyz below。也许这就是你要找的。
原始答案
Mongoose支持
Date
类型(基本上是一个时间戳):使用上面的字段定义,任何时候你保存一个带有未设置
time
字段的文档,Mongoose都会用当前时间填充这个字段。来源:http://mongoosejs.com/docs/guide.html
gmxoilav2#
Mongoose(v4.x)的当前版本将时间戳作为模式的内置选项:
此选项添加了带有
Date
时间戳的createdAt
和updatedAt
属性,并为您完成所有工作。每当您更新文档时,它都会更新updatedAt
属性。架构时间戳egmofgnx3#
如果您想为
createdAt
和updatedAt
自定义名称,jtjikinw4#
文档:https://mongoosejs.com/docs/guide.html#timestamps
1rhkuytd5#
Mongoose现在支持schema中的时间戳。
这将在创建的每个记录上添加
createdAt
和updatedAt
字段。时间戳接口具有字段
这将帮助我们选择我们想要的字段并覆盖日期格式。
kyxcudwk6#
kt06eoxx7#
我想使用此字段,以便返回在过去5分钟内更新的所有记录。
这意味着每次保存对象时都需要将日期更新为“现在”。也许你会发现这很有用:Moongoose create-modified plugin
mdfafbf18#
您可以使用timestamps:true沿着toDateString来获取创建和更新日期。
Sample doc in Mongo DB
bd1hkmkf9#
第一个:
npm install mongoose-timestamp
下一页:
let Timestamps = require('mongoose-timestamp')
下一页:
let MySchema = new Schema
下一页:
MySchema.plugin(Timestamps)
下一页:
const Collection = mongoose.model('Collection',MySchema)
然后,您可以在任何地方使用
Collection.createdAt
或Collection.updatedAt
。创建日期:星期日期月日期年00:00:00 GMT
时间就是这种格式。