Mongodb 删除由其id中的时间戳记录的mongo
这个问题很受欢迎,但有点扭曲;我需要在创建时使用其_id删除一些记录。我没有任何日期、createdAt字段,因为mongo使用其_id作为createdAt时间戳 我如何使用此删除记录的文件(例如30天前创建的文件)Mongodb 删除由其id中的时间戳记录的mongo,mongodb,Mongodb,这个问题很受欢迎,但有点扭曲;我需要在创建时使用其_id删除一些记录。我没有任何日期、createdAt字段,因为mongo使用其_id作为createdAt时间戳 我如何使用此删除记录的文件(例如30天前创建的文件) 变量id=新的ObjectId Math.floordeletionDate.getTime/1000.ToString 16+0000000000000000 删除{createdAt:{$lt:id} var id=new ObjectId Math.floordeletio
变量id=新的ObjectId Math.floordeletionDate.getTime/1000.ToString 16+0000000000000000
删除{createdAt:{$lt:id} var id=new ObjectId Math.floordeletionDate.getTime/1000.toString 16+0000000000000000
删除{createdAt:{$lt:id} 您需要从对象id提取时间戳。因此您可以执行以下操作:-
db.messages.find({}).forEach(function(rec) {
var recDate = rec._id.getTimestamp();
// Then here cast your deletionDate and recDate to preferred string format, e.g:-
var recDateString = recDate.getMonth()+1+'-'+recDate.getDate()+'-'+recDate.getFullYear();
var deletionDateString = deletionDate.getMonth()+1+'-'+deletionDate.getDate()+'-'+deletionDate.getFullYear();
if (deletionDateString == recDateString ){
db.messages.remove({_id:rec._id});
}
}
您需要从对象_id提取时间戳。因此您可以执行以下操作:-
db.messages.find({}).forEach(function(rec) {
var recDate = rec._id.getTimestamp();
// Then here cast your deletionDate and recDate to preferred string format, e.g:-
var recDateString = recDate.getMonth()+1+'-'+recDate.getDate()+'-'+recDate.getFullYear();
var deletionDateString = deletionDate.getMonth()+1+'-'+deletionDate.getDate()+'-'+deletionDate.getFullYear();
if (deletionDateString == recDateString ){
db.messages.remove({_id:rec._id});
}
}
使用mongo shell:
db.collection.find({"_id": { "$gt": ObjectId.fromDate(new Date('2017-10-01'))}})
使用猫鼬:
Model.find({ _id: { $gt: mongoose.Types.ObjectId.createFromTime(new Date('2018-01-01')) } })
将找到所需的文档。使用mongo shell:
db.collection.find({"_id": { "$gt": ObjectId.fromDate(new Date('2017-10-01'))}})
使用猫鼬:
Model.find({ _id: { $gt: mongoose.Types.ObjectId.createFromTime(new Date('2018-01-01')) } })
将找到所需的文档。可能的副本