Kể từ khi loại bỏ điều kiện truy vấn sẽ không khớp với tất cả các tài liệu và xóa bất kể kết quả tổng hợp.
Giải pháp (khớp với id của tài liệu con trỏ hiện tại):
db.getCollection("Collection")
.aggregate([
{
$match: { status: { $in: ["inserted", "done", "duplicated", "error"] } }
},
{
$project: {
yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }
}
},
{ $match: { yearMonthDay: { $eq: "2019-08-06" } } }
])
.forEach(function(doc) {
db.getCollection("Collection").remove({ "_id": doc._id });
});
Một giải pháp tốt hơn sẽ có một chuyến đi khứ hồi đến db trong khi việc xóa sẽ nhận được danh sách id từ tập hợp cursor()
qua cursor.map()
var idsList = db
.getCollection("Collection")
.aggregate([
{
$match: { status: { $in: ["inserted", "done", "duplicated", "error"] } }
},
{
$project: {
yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }
}
},
{ $match: { yearMonthDay: { $eq: "2019-08-06" } } }
])
.map(function(d) {
return d._id;
});
//now delete those documents via $in operator
db.getCollection("Collection").remove({ _id: { $in: idsList } });