在 MongoDB 中查詢重複的記錄?


可以使用聚合框架在 MongoDB 中查詢重複的記錄。為了理解這個概念,讓我們建立一個帶有文件的集合。建立帶有文件的集合的查詢如下 -

> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a330293b406bd3df60e01")
}
> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a330493b406bd3df60e02")
}
> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a330c93b406bd3df60e03")
}
> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Sam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a331093b406bd3df60e04")
}
> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a331593b406bd3df60e05")
}
> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a331e93b406bd3df60e06")
}

使用 find() 方法從集合中顯示所有文件。查詢如下 -

> db.findDuplicateRecordsDemo.find();

以下是輸出 -

{ "_id" : ObjectId("5c8a330293b406bd3df60e01"), "StudentFirstName" : "John" }
{ "_id" : ObjectId("5c8a330493b406bd3df60e02"), "StudentFirstName" : "John" }
{ "_id" : ObjectId("5c8a330c93b406bd3df60e03"), "StudentFirstName" : "Carol" }
{ "_id" : ObjectId("5c8a331093b406bd3df60e04"), "StudentFirstName" : "Sam" }
{ "_id" : ObjectId("5c8a331593b406bd3df60e05"), "StudentFirstName" : "Carol" }
{ "_id" : ObjectId("5c8a331e93b406bd3df60e06"), "StudentFirstName" : "Mike" }

以下是查詢在 MongoDB 中查詢重複記錄 -

> db.findDuplicateRecordsDemo.aggregate(
   ... {"$group" : { "_id": "$StudentFirstName", "count": { "$sum": 1 } } },
   ... {"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } },
   ... {"$project": {"StudentFirstName" : "$_id", "_id" : 0} }
... );

以下是僅顯示重複記錄的輸出 -

{ "StudentFirstName" : "Carol" }
{ "StudentFirstName" : "John" }

更新於: 2019 年 7 月 30 日

2 千+ 次瀏覽

開啟您的 事業

完成課程獲得認證

立即開始
廣告
© . All rights reserved.