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

2つの日付の間で、MongoDBの特定の値を使用してデータをフェッチします。グループ化して、カウントで合計を取得しますか?


一致させるには、MongoDBで$ matchを使用し、2つの日付の間のデータを取得するには、$gteと$lteを使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo560.insertOne({"value1":40,"value2":40,shippingDate:new ISODate("2020-02-26")});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e867")
}
> db.demo560.insertOne({"value1":20,"value2":60,shippingDate:new ISODate("2020-02-26")});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e868")
}
> db.demo560.insertOne({"value1":40,"value2":70,shippingDate:new ISODate("2020-03-31")});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e869")
}
> db.demo560.insertOne({"value1":40,"value2":130,shippingDate:new ISODate("2020-03-31")});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f3d5254b4472ed3e8e86a")
}

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

> db.demo560.find();

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

{ "_id" : ObjectId("5e8f3d5254b4472ed3e8e867"), "value1" : 40, "value2" : 40, "shippingDate" : ISODate("2020-02-26T00:00:00Z") }
{ "_id" : ObjectId("5e8f3d5254b4472ed3e8e868"), "value1" : 20, "value2" : 60, "shippingDate" : ISODate("2020-02-26T00:00:00Z") }
{ "_id" : ObjectId("5e8f3d5254b4472ed3e8e869"), "value1" : 40, "value2" : 70, "shippingDate" : ISODate("2020-03-31T00:00:00Z") }
{ "_id" : ObjectId("5e8f3d5254b4472ed3e8e86a"), "value1" : 40, "value2" : 130, "shippingDate" : ISODate("2020-03-31T00:00:00Z") }

以下は、2つの日付の間で特定の値を持つデータをフェッチするためのクエリです。ここで、value140は特定の値です-

> db.demo560.aggregate([
... {
...    $match: {
...       "value1": 40,
...       "shippingDate": {
...          "$gte": ISODate("2020-02-26"),
...          "$lte": ISODate("2020-03-31")
...       }
...    }
... },
... {
...    $group: {
...       "_id": "$shippingDate",
...       total: {
...          $sum: '$value2'
...       },
...       count: {
...          $sum: 1
...       }
...    }
... }
... ])

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

{ "_id" : ISODate("2020-03-31T00:00:00Z"), "total" : 200, "count" : 2 }
{ "_id" : ISODate("2020-02-26T00:00:00Z"), "total" : 40, "count" : 1 }

  1. MySQLで列の特定の値のカウントを取得するにはどうすればよいですか?

    最初にテーブルを作成しましょう- mysql> create table DemoTable    (       Id int,       Name varchar(100)    ); Query OK, 0 rows affected (1.40 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(100,'John'); Query OK, 1 row aff

  2. MySQLで指定された2つの日付の間のレコードの合計を取得します

    これには、BETWEENキーワードを使用します。まず、-を作成しましょう mysql> create table DemoTable1444    -> (    -> Value int,    -> PurchaseDate datetime    -> ); Query OK, 0 rows affected (0.45 sec) insert-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1444 valu