2017-02-24 100 views
1
var MySchema = new Schema({ 
    ... 
    expireAt: { type: Date, default: Date.now }, 
    ... 
}); 

如果我用这个模式一切正常,但如果我设置更复杂的默认这样的:MongoDB的日期类型:铸造失败

var MySchema = new Schema({ 
    ... 
    expireAt: { type: Date, default: (Date.now + 1000)}, 
    ... 
}); 

在创建显示以下错误:

CastError: Cast to date faile for value "function now() .....

我试图保持出价值,但仍然问题铸造

var t = Date.now + 1000; 
var MySchema = new Schema({ 
    ... 
    expireAt: { type: Date, default: t}, 
    ... 
}); 

也尝试与new Date() ...但现在的方式。

我需要这个字段来检查TTL的expireAt,所以我认为我不能从Date设置不同的类型。

有什么建议吗?

回答

0

您可以设置到期在创建的领域的模式,如:

new Schema({ createdAt: { type: Date, expires: 60*60*24 }}); 

与上面的代码中创建的文件在24个小时后就会过期。

+0

其实我希望整个对象将被删除,而不仅仅是字段 – pittuzzo

+0

是的,它会删除整个文档。 –

+0

我试过了,但它似乎不工作。我在我的模式上设置了'expireAt:{type:Date,expires:60}'并保留'MySchema.index({“expireAt”:1},{expireAfterSeconds:0});'。 60秒后,记录仍在我的数据库中。 – pittuzzo