MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

キーフィールドでMongoDBコレクション内の重複するすべてのドキュメントを検索しますか?


集約フレームワークを使用して、キーフィールドによってMongoDBコレクション内のすべての重複ドキュメントを検索します。

概念を理解するために、ドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです-

> db.findDuplicateByKeyDemo.insertOne({"StudentId":1,"StudentName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f5b168d10a061296a3c3a")
}
> db.findDuplicateByKeyDemo.insertOne({"StudentId":2,"StudentName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f5b1f8d10a061296a3c3b")
}
> db.findDuplicateByKeyDemo.insertOne({"StudentId":3,"StudentName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f5b248d10a061296a3c3c")
}
> db.findDuplicateByKeyDemo.insertOne({"StudentId":4,"StudentName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f5b2d8d10a061296a3c3d")
}
> db.findDuplicateByKeyDemo.insertOne({"StudentId":5,"StudentName":"Sam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f5b398d10a061296a3c3e")
}
> db.findDuplicateByKeyDemo.insertOne({"StudentId":6,"StudentName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f5b438d10a061296a3c3f")
}

find()メソッドを使用して、コレクションのすべてのドキュメントを表示します。クエリは次のとおりです-

> db.findDuplicateByKeyDemo.find().pretty();

以下は出力です-

{
   "_id" : ObjectId("5c7f5b168d10a061296a3c3a"),
   "StudentId" : 1,
   "StudentName" : "John"
}
{
   "_id" : ObjectId("5c7f5b1f8d10a061296a3c3b"),
   "StudentId" : 2,
   "StudentName" : "Carol"
}
{
   "_id" : ObjectId("5c7f5b248d10a061296a3c3c"),
   "StudentId" : 3,
   "StudentName" : "Carol"
}
{
   "_id" : ObjectId("5c7f5b2d8d10a061296a3c3d"),
   "StudentId" : 4,
   "StudentName" : "John"
}
{
   "_id" : ObjectId("5c7f5b398d10a061296a3c3e"),
   "StudentId" : 5,
   "StudentName" : "Sam"
}
{
   "_id" : ObjectId("5c7f5b438d10a061296a3c3f"),
   "StudentId" : 6,
   "StudentName" : "Carol"
}

重複するすべてのドキュメントを検索するためのクエリは次のとおりです」-

> db.findDuplicateByKeyDemo.aggregate([
   ... { $group: {
      ... _id: { StudentName: "$StudentName" },
      ... UIDS: { $addToSet: "$_id" },
      ... COUNTER: { $sum: 1 }
   ... } },
   ... { $match: {
      ... COUNTER: { $gte: 2 }
   ... } },
   ... { $sort : { COUNTER : -1} },
   ... { $limit : 10 }
... ]).pretty();

以下は、重複レコードを表示する出力です。ここでは、学生の「キャロル」が3回来ますが、ジョンは2回来ます-

以下は出力です-

{
   "_id" : {
      "StudentName" : "Carol"
   },
   "UIDS" : [
      ObjectId("5c7f5b248d10a061296a3c3c"),
      ObjectId("5c7f5b438d10a061296a3c3f"),
      ObjectId("5c7f5b1f8d10a061296a3c3b")
   ],
   "COUNTER" : 3
}
{
   "_id" : {
      "StudentName" : "John"
   },
   "UIDS" : [
      ObjectId("5c7f5b2d8d10a061296a3c3d"),
      ObjectId("5c7f5b168d10a061296a3c3a")
   ],
   "COUNTER" : 2
}

  1. MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法

    新しいフィールドを追加するには、MongoDBで$addFieldsを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo712.insertOne({"Name":"John"}); {    "acknowledged" : true,    "insertedId" : ObjectId("5ea85f675d33e20ed1097b82") } > db.demo712.insertOne({"

  2. コレクション内のドキュメントの各フィールドを数式で更新するMongoDBクエリ?

    コレクション内のドキュメントの各フィールドを数式で更新するには、MongoDB update()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo749.insertOne({"details":[{"id":1,a:10},{"id":2,a:5},{"id":3,a:20}]}); {    "acknowledged" : true,    "insertedId" : ObjectId(