MongoDBで2つの日付の間のデータを検索する方法($gteと$ltの使い方)
MongoDBで特定の期間(開始日と終了日の間)に該当するデータを検索するには、比較演算子である $gte(以上)と $lt(未満)を組み合わせて使用します。この記事では、実際にコレクションを作成しながら、日付範囲検索の手順をわかりやすく解説します。
1. サンプルコレクションの作成
まず、日付フィールドを持つドキュメントを含むコレクションを作成します。以下の例では、demo524 というコレクションに EndDate フィールドを持つ3つのドキュメントを挿入しています。
> db.demo524.insertOne({"EndDate":new ISODate("2020-01-19")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8adbe5437efc8605595b63")
}
> db.demo524.insertOne({"EndDate":new ISODate("2020-01-20")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8adbec437efc8605595b64")
}
> db.demo524.insertOne({"EndDate":new ISODate("2020-12-31")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8adbf3437efc8605595b65")
}
2. 登録されたドキュメントの確認
find() メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。
> db.demo524.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e8adbe5437efc8605595b63"), "EndDate" : ISODate("2020-01-19T00:00:00Z") }
{ "_id" : ObjectId("5e8adbec437efc8605595b64"), "EndDate" : ISODate("2020-01-20T00:00:00Z") }
{ "_id" : ObjectId("5e8adbf3437efc8605595b65"), "EndDate" : ISODate("2020-12-31T00:00:00Z") }
3. 日付範囲を指定してデータを検索する
それでは、2つの日付の間にあるデータを検索するクエリを見ていきましょう。検索条件となる開始日と終了日を変数に格納し、$gte と $lt を使って範囲を指定します。
> var first = new ISODate("2020-01-04");
> var last = new ISODate("2020-01-31");
> db.demo524.find({EndDate: {$gte: first, $lt: last}});
このクエリでは、EndDate が 2020年1月4日以上 かつ 2020年1月31日未満 のドキュメントのみが取得されます。実行結果は以下のとおりです。
{ "_id" : ObjectId("5e8adbe5437efc8605595b63"), "EndDate" : ISODate("2020-01-19T00:00:00Z") }
{ "_id" : ObjectId("5e8adbec437efc8605595b64"), "EndDate" : ISODate("2020-01-20T00:00:00Z") }
ポイントのまとめ
$gte:指定した値「以上」を意味し、境界値を含みます。$lt:指定した値「未満」を意味し、境界値を含みません。- 両端の日付も含めて検索したい場合は、
$lte(以下)を使用します。 - 日付は
ISODate()で生成することで、正確な比較が可能になります。
このように、MongoDBでは $gte と $lt を組み合わせることで、柔軟に日付範囲検索を実現できます。ログ分析や期間集計など、実務でも頻繁に使われるテクニックなので、ぜひマスターしておきましょう。
-
Excelで2つの日付間のうるう年の数を計算する方法
企業、官公庁、イベント主催者などにとって、リストの中にうるう年がいくつ含まれているのかを把握しておくことは重要です。Excelで2つの日付の間に含まれるうるう年の数を確認したい場合は、ぜひこの記事をご覧ください。 うるう年は平年に比べてわずか1日多いだけですが、その影響はさまざまな計算に及びます。多くの企業では、うるう年かどうかによって給与計算が変わり、ビジネスの利益計算にも影響が出ることがあります。 Excelで2つの日付間のうるう年数を計算する Excelで2つの日付間のうるう年の数をカウントするには、次の数式を使用します。 =DATE(YEAR(<終了日のセル>),1,1)-
-
Excelで2つの日付の間のすべての日付を抽出して一覧表示する2つの方法
スケジュール表や活動記録など、日付ごとの表を作成しなければならない場面はよくあります。そのような場合、日付のリストが必要になります。リストには必ず開始日と終了日があり、その間のすべての日付を列挙する必要があります。 Excelで2つの日付間の全日付を一覧表示する方法 この記事では、指定した2つの日付の間にあるすべての日付を、1つの列にリストとして取得する方法を紹介します。やり方は主に次の2つです。 フィルハンドルを使って連続した日付のリストを作成する 数式を使って2つの日付間のすべての日付を取得する 方法1:フィルハンドルで連続日付のリストを作成する Microsoft Excelには「