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

MongoDBのフィールドの重複する値を取得しますか?


重複するフィールドの値を取得するには、aggregate()メソッドを使用します。まず、次のクエリを使用してドキュメントを含むコレクションを作成しましょう

> db.findAllNonDistinctDemo.insertOne({"UserName":"John","UserAge":28});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c995078863d6ffd454bb647")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"Larry","UserAge":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c995081863d6ffd454bb648")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"Larry","UserAge":23});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c995089863d6ffd454bb649")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"David","UserAge":22});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c995093863d6ffd454bb64a")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"John","UserAge":26});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c99509d863d6ffd454bb64b")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"Robert","UserAge":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9950a7863d6ffd454bb64c")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"Robert","UserAge":25});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9950b1863d6ffd454bb64d")
}
> db.findAllNonDistinctDemo.insertOne({"UserName":"Mike","UserAge":29});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9950bc863d6ffd454bb64e")
}

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです

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

これにより、次の出力が生成されます

{
   "_id" : ObjectId("5c995078863d6ffd454bb647"),
   "UserName" : "John",
   "UserAge" : 28
}
{
   "_id" : ObjectId("5c995081863d6ffd454bb648"),
   "UserName" : "Larry",
   "UserAge" : 21
}
{
   "_id" : ObjectId("5c995089863d6ffd454bb649"),
   "UserName" : "Larry",
   "UserAge" : 23
}
{
   "_id" : ObjectId("5c995093863d6ffd454bb64a"),
   "UserName" : "David",
   "UserAge" : 22
}
{
   "_id" : ObjectId("5c99509d863d6ffd454bb64b"),
   "UserName" : "John",
   "UserAge" : 26
}
{
   "_id" : ObjectId("5c9950a7863d6ffd454bb64c"),
   "UserName" : "Robert",
   "UserAge" : 24
}
{
   "_id" : ObjectId("5c9950b1863d6ffd454bb64d"),
   "UserName" : "Robert",
   "UserAge" : 25
}
{
   "_id" : ObjectId("5c9950bc863d6ffd454bb64e"),
   "UserName" : "Mike",
   "UserAge" : 29
}

以下は、MongoDBのフィールドの重複する値をすべて見つけるためのクエリです

> db.findAllNonDistinctDemo.aggregate([
...    { "$group": {
...       "_id": "$UserName",
...       "Counter": { "$sum": 1 }
...    }},
...    { "$match": {
...       "Counter": { "$gt": 1 }
...    }}
... ]).pretty();

これにより、次の出力が生成されます。重複するすべてのレコードが表示されるようになりました

{ "_id" : "Robert", "Counter" : 2 }
{ "_id" : "Larry", "Counter" : 2 }
{ "_id" : "John", "Counter" : 2 }

  1. フィールドの戻り値を制限するMongoDBクエリ?

    これには、$sliceを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo594.insertOne( ...    { ...       id:1, ...       details:[ ...          {Name:"Chris",Age:21}, ...          {Name:"Bob",Age:20}, ...

  2. MongoDBの特定の文字列でフィールドのすべての値を更新しますか?

    すべての値を更新するには、update()をmulti:trueとともに使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo720.insertOne({"SubjectName":"MySQL"}); {    "acknowledged" : true,    "insertedId" : ObjectId("5eaae7ca43417811278f5883") } > db.demo720.insertOn