我正在使用Mongoose,MongoDB和Node。
我想定义一个架构,其中一个字段是date \ timestamp。
我想使用此字段来返回过去5分钟内更新过的所有记录。
由于在Mongoose中我不能使用Timestamp()方法,我理解我唯一的选择是使用以下Javascript方法:
time : { type: Number, default: (new Date()).getTime() }
这可能不是查询庞大数据库的最有效方式。 如果有人可以分享一种更有效的方式来实现这一点,我将非常感激。
有没有办法用Mongoose实现这个并且能够使用MongoDB时间戳?
答案 0 :(得分:104)
编辑 - 2016年3月20日
Mongoose现在支持timestamps for collections。
请考虑以下@bobbyz的答案。也许这就是你要找的东西。
Mongoose支持Date
类型(基本上是时间戳):
time : { type : Date, default: Date.now }
使用上述字段定义,只要您使用未设置的time
字段保存文档,Mongoose就会使用当前时间填写此字段。
答案 1 :(得分:88)
当前版本的Mongoose(v4.x)将时间戳记作为架构的内置选项:
var mySchema = new mongoose.Schema( {name: String}, {timestamps: true} );
此选项会添加createdAt
和updatedAt
属性,这些属性会以Date
为时间戳,并为您完成所有工作。每次更新文档时,它都会更新updatedAt
属性。 Schema Timestamps Docs.
答案 2 :(得分:3)
如果要为createdAt和updatedAt定义自定义名称
const mongoose = require('mongoose');
const { Schema } = mongoose;
const schemaOptions = {
timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' },
};
const mySchema = new Schema({ name: String }, schemaOptions);
答案 3 :(得分:1)
var ItemSchema = new Schema({
name : { type: String }
});
ItemSchema.set('timestamps', true); // this will add createdAt and updatedAt timestamps
答案 4 :(得分:1)
Mongoose 现在支持架构中的时间戳。
const item = new Schema(
{
id: {
type: String,
required: true,
},
{ timestamps: true },
);
这将在每条记录创建时添加 createdAt
和 updatedAt
字段。
时间戳接口有字段
interface SchemaTimestampsConfig {
createdAt?: boolean | string;
updatedAt?: boolean | string;
currentTime?: () => (Date | number);
}
这将帮助我们选择我们想要的字段并覆盖日期格式。
答案 5 :(得分:0)
我想使用此字段来返回过去5分钟内更新过的所有记录。
这意味着每次保存对象时都需要将日期更新为“now”。也许你会觉得这很有用:Moongoose create-modified plugin
答案 6 :(得分:0)
第一位: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
时间是这种格式。
答案 7 :(得分:0)
new mongoose.Schema({
description: {
type: String,
required: true,
trim: true
},
completed: {
type: Boolean,
default: false
},
owner: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'User'
}
}, {
timestamps: true
});