Mongo DB查询以获取和删除2018年的记录

时间:2020-07-11 07:20:11

标签: mongodb mongodb-query

我正在使用下面的查询来查找2018年的记录。我的查询是先查找2018年的记录,然后删除 2018记录。我可以从GUI Robo3t删除吗?

db.transaction.find().sort({timeStamp:1}).limit(5000);

样本文档:

{ 
    "_id" : 999999001, 
    "eventId" : "LAS071", 
    "eventName" : "YouRefer", 
    "timeStamp" : "2018-06-17T17:12:55.254Z", 
    "eventMethod" : "Reporting", 
    "resourceName" : "AddSTB", 
    "targetType" : "", 
    "resourseUrl" : "", 
    "operationName" : "", 
    "functionStatus" : "", 
    "pageId" : "CloseJobView", 
    "ban" : 144235039, 
    "jobId" : 139980225, 
    "wrid" : 139980225, 
    "jobType" : "MRJ2IX", 
    "Uid" : "kt7201", 
    "techRegion" : "SE", 
    "mgmtReportingFunction" : "N", 
    "recordPublishIndicator" : "Y" 
}

我使用查询并查找记录:

db.transaction.deleteMany({
  "timeStamp": { $gte: new Date(2018, 0, 1), $lt: new Date(2019, 0, 1) }
})

但是我有大约10万条2018年记录。我们如何使用上述查询一次删除5K条记录?

HI专家

我尝试在集合中首先查找,但这是说获取了0条记录。

db.transaction.find({
  "timeStamp": { $gte: new Date(2018, 0, 1), $lt: new Date(2019, 0, 1) }
})

Output: Fetched 0 record(s) in 31ms

但是我在下面的集合中签入了具有这些时间戳记的记录,

"timeStamp" : ISODate("2018-12-31T18:30:03.379Z"),

"timeStamp" : ISODate("2018-12-31T18:30:03.982Z"),
 

1 个答案:

答案 0 :(得分:0)

这是一个Shell命令,用于删除2018年以来的所有文档:

db.transaction.deleteMany({
  "timeStamp": { $gte: new Date(2018, 0, 1), $lt: new Date(2019, 0, 1) }
})

它的工作原理是查询所有timeStamp大于或等于2018年1月1日,且timeStamp小于2019年1月1日的记录。

修改

您的timeStamp字段似乎是一个字符串。尝试使用此查询查找字符串2018:

{ "timeStamp": { $regex: "^2018" } }