Mongodb 删除由其id中的时间戳记录的mongo

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删除一些记录。我没有任何日期、createdAt字段,因为mongo使用其_id作为createdAt时间戳

我如何使用此删除记录的文件(例如30天前创建的文件)


变量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')) } })
将找到所需的文档。

可能的副本