[英]Removing duplicates from MongoDB but MongoDB db.collection.find() return empty result
如何從 MongoDB 中刪除重復項? 但是 MongoDB db.collection.find() 看起來根本不起作用。
代碼
start_date = "2020-05-00"
end_date = "2020-07-00"
collection.create_index([('text', 'text')])
df = pd.DataFrame(list(collection.find({"$text":
{"$search": "ACTIVE - ACT 06"},
"datetime": {
"$gte": start_date+"T00:00:00.000Z",
"$lt": end_date+"T00:00:00.000Z"
}},
{"_id":1, "datetime":1,"name":1})))
樣本重復數據。 我想確保每個日期的名稱都是唯一的(忽略時間)。
{
"datetime": "2020-05-03 06:43:52",
"name": "ACTIVE - ACT 06"
},
{
"datetime": "2020-05-03 06:44:01",
"name": "ACTIVE - ACT 05"
},
{
"datetime": "2020-05-03 07:43:52",
"name": "ACTIVE - ACT 06"
},
{
"datetime": "2020-05-03 07:44:01",
"name": "ACTIVE - ACT 05"
},
{
"datetime": "2020-05-03 08:43:52",
"name": "ACTIVE - ACT 06"
},
{
"datetime": "2020-05-03 08:44:01",
"name": "ACTIVE - ACT 05"
}
拆除后。 僅保存較早的記錄。
{
"datetime": "2020-05-03 06:43:52",
"name": "ACTIVE - ACT 06"
},
{
"datetime": "2020-05-03 06:44:01",
"name": "ACTIVE - ACT 05"
}
您可以像這樣使用聚合框架:
db.collection.aggregate([
{
$group: {
_id: "$name",
dups: {
$push: "$_id"
},
count: {
$sum: 1
}
}
},
{
$match: {
count: {
$gt: 1
}
}
}
]).forEach(function(doc){
db.collection.remove({
_id: {
$in: doc.dups
}
});
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.