我使用的是Mongoose、MongoDB和Node。
我想定义一个模式,其中一个字段是日期\时间戳。
我希望使用此字段返回最近5分钟内更新的所有记录。
由于在Mongoose中我不能使用Timestamp()方法,我知道我唯一的选择是使用下面的Javascript方法:
time : { type: Number, default: (new Date()).getTime() }
这可能不是查询庞大数据库的最有效方法。如果有人能分享一种更有效的实现方法,我将非常感激。
有没有办法用Mongoose来实现这一点,并且能够使用MongoDB时间戳?
9条答案
按热度按时间4smxwvx51#
编辑-2016年3月20日
Mongoose现在支持集合的时间戳。
请考虑一下answer of @bobbyz below,也许这就是你要找的。
原始答案
Mongoose支持
Date
类型(基本上是一个时间戳):使用上面的字段定义,任何时候保存带有未设置的
time
字段的文档时,Mongoose都会用当前时间填充此字段。来源:http://mongoosejs.com/docs/guide.html
1qczuiv02#
Mongoose 的 当前 版本 ( v4.x ) 将 时间 戳 作为 模式 的 内置 选项 :
中 的 每 一 个
此 选项 添加 带有
Date
时间 戳 的createdAt
和updatedAt
属性 , 它 会 为 您 完成 所有 工作 。 每当 您 更新 文档 时 , 它 都会 更新updatedAt
属性 。 架构 时间 戳 文档 。gopyfrb33#
如果您需要为
createdAt
和updatedAt
自定义名称6tdlim6h4#
文件:https://mongoosejs.com/docs/guide.html#timestamps
wr98u20j5#
Mongoose 现在 支持 模式 中 的 时间 戳 。
中 的 每 一 个
这 将 在 创建 的 每个 记录 上 添加
createdAt
和updatedAt
字段 。时间 戳 接口 具有 字段
格式
这 将 帮助 我们 选择 所 需 的 字段 并 覆盖 日期 格式 。
crcmnpdw6#
pzfprimi7#
我希望使用此字段返回在过去5分钟内更新的所有记录。
这意味着每次保存对象时,您都需要将日期更新为“现在”。也许您会发现这很有用:Moongoose create-modified plugin
cyej8jka8#
您可以使用timestamps:true沿着toDateString来获取创建和更新日期。
Sample doc in Mongo DB
gcxthw6b9#
第一个:
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
时间采用此格式。