我正在使用下面的查询来查找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"),
答案 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" } }