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

複数のフィールドでグループ化し、MongoDBでグループ化された重複フィールド値の数を取得します


これには、MongoDBアグリゲートを使用し、その中で$condを使用します。 $ condはブール式を評価して、指定された2つの戻り式のいずれかを返します。

まず、ドキュメントを使用してコレクションを作成しましょう-

> db.demo536.insertOne({"Name1":"Chris","Name2":"David"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8c843eef4dcbee04fbbc01")
}
> db.demo536.insertOne({"Name1":"David","Name2":"Chris"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8c843fef4dcbee04fbbc02")
}
> db.demo536.insertOne({"Name1":"Bob","Name2":"Sam"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8c843fef4dcbee04fbbc03")
}
> db.demo536.insertOne({"Name1":"Chris","Name2":"David"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8c843fef4dcbee04fbbc04")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo536.find();

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

{ "_id" : ObjectId("5e8c843eef4dcbee04fbbc01"), "Name1" : "Chris", "Name2" : "David" }
{ "_id" : ObjectId("5e8c843fef4dcbee04fbbc02"), "Name1" : "David", "Name2" : "Chris" }
{ "_id" : ObjectId("5e8c843fef4dcbee04fbbc03"), "Name1" : "Bob", "Name2" : "Sam" }
{ "_id" : ObjectId("5e8c843fef4dcbee04fbbc04"), "Name1" : "Chris", "Name2" : "David" }

以下は、複数のフィールドでグループ化するためのクエリです-

> db.demo536.aggregate([
... {
...    $project:
...    {
...       FirstName1:
...       {
...          $cond: { if: { $gte: [ "$Name1", "$Name2" ] }, then: "$Name2", else: "$Name1" }
...       },
...       FirstName2:
...       {
...          $cond: { if: { $lt: [ "$Name1", "$Name2" ] }, then: "$Name2", else: "$Name1" }
...       }
...    }
... }
... ,{
...    $group:
...    {
...       _id:
...       {
...          Name1: "$FirstName1",
...          Name2: "$FirstName2"
...       }
...       ,count: { $sum: 1}
...    }
... }
... ])

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

{ "_id" : { "Name1" : "Bob", "Name2" : "Sam" }, "count" : 1 }
{ "_id" : { "Name1" : "Chris", "Name2" : "David" }, "count" : 3 }

  1. MySQLを使用して列の繰り返し値の数を取得できますか?

    はい、GROUPBYでORDERBYDESCを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> PostMessage varchar(100)    -> ); Query OK, 0 rows affected (0.69 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します

  2. 結果を日付でグループ化し、重複する値の数を表示するMySQLクエリ?

    まずテーブルを作成しましょう- mysql> create table DemoTable1496    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> PassengerCode varchar(20),    -> ArrivalDate datetime    -> ); Query OK, 0 rows affected (0.85 sec) 挿入コマンド-を使用して、テーブル