【发布时间】:2018-04-10 12:14:27
【问题描述】:
我有我的猫鼬模型:
LogSchema = new Schema({
level : String,
code: String,
message: String,
Timestamp : {
type : Date,
default: Date.now
}
})
我正在尝试使用此代码删除所有超过 30 天的文档(时间戳字段):
var d = new Date();
var older_than = new Date(d.setDate(d.getDate() - 30));
Log.remove({ Timestamp : {$lte : older_than } }, function(err) {
if (!err) {
console.log("Clean complete")
} else {
console.log("Clean error")
}
});
我在控制台上看到:“清理完成”,但我仍有所有超过 30 天的文档。
我的代码有问题吗?
【问题讨论】:
-
你用的是什么版本的猫鼬?
-
猫鼬版本:^5.0.10
-
日期是否作为实际时间戳存储在您的数据库中?即:
1520699330307。如果是这样,older_than的值不正确,因为它是日期对象而不是时间戳。做console.log(older_than)并检查一下。 -
要从日期对象中获取时间戳,可以使用
older_than.valueOf() -
我已经更新了答案。它对我有用,也可能对你有用
标签: node.js express mongoose mongoose-schema