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

日付順およびユーザー別のグループ化に対する単一のMongoDBクエリ


これには、MongoDBでaggregate()を使用するだけです。ドキュメントを使用してコレクションを作成しましょう-

> db.demo243.insertOne({"userId":1,dueDate:new ISODate("2019-01-10")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4575f81627c0c63e7dba5f")
}
> db.demo243.insertOne({"userId":2,dueDate:new ISODate("2019-11-10")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4576011627c0c63e7dba60")
}
> db.demo243.insertOne({"userId":2,dueDate:new ISODate("2020-01-31")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4576151627c0c63e7dba61")
}
> db.demo243.insertOne({"userId":1,dueDate:new ISODate("2010-01-10")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e45761b1627c0c63e7dba62")
}

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

> db.demo243.find();

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

{ "_id" : ObjectId("5e4575f81627c0c63e7dba5f"), "userId" : 1, "dueDate" : ISODate("2019-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e4576011627c0c63e7dba60"), "userId" : 2, "dueDate" : ISODate("2019-11-10T00:00:00Z") }
{ "_id" : ObjectId("5e4576151627c0c63e7dba61"), "userId" : 2, "dueDate" : ISODate("2020-01-31T00:00:00Z") }
{ "_id" : ObjectId("5e45761b1627c0c63e7dba62"), "userId" : 1, "dueDate" : ISODate("2010-01-10T00:00:00Z") }

以下は、orderbydateとgroupbyuser-

へのクエリです。
> db.demo243.aggregate({
...   $group: {
...      _id : '$userId',
...      dueDate: { $max: '$dueDate'}
...   }
...})

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

{ "_id" : 2, "dueDate" : ISODate("2020-01-31T00:00:00Z") }
{ "_id" : 1, "dueDate" : ISODate("2019-01-10T00:00:00Z") }

  1. 個別を選択してカウントするMongoDBクエリ?

    ドキュメントを使用してコレクションを作成しましょう- > db.demo586.insertOne( ...    {"details": [ ...       { ...          "Name":"Chris", ...          "Marks":71 ...       }, ...    

  2. MySQL-日付別のグループとカウント?

    これには、GROUP BY句とCOUNT()関数を使用できます。構文は次のとおりです- SELECT yourColumnName1,yourColumnName2,..N,COUNT(*) as anyAliasName FROM yourTableName GROUP BY yourColumnName1,yourColumnName2; 上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです- mysql> create table GroupAndCountByDate    -> (   &nb