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

MongoDBで2つの日付の間にあるデータを検索する方法|$gteと$lt演算子の使い方を解説

MongoDBで特定の期間に含まれる日付データを持つドキュメントを検索したい場合、比較演算子である $gte(以上)と $lt(未満)を組み合わせて使用します。この記事では、実際にコレクションを作成しながら、2つの日付の間にあるオブジェクトを取得する方法をわかりやすく解説します。

1. 比較演算子 $gte と $lt とは

各演算子の意味は以下の通りです。

  • $gte:指定した値「以上」を意味します(greater than or equal)
  • $lt:指定した値「未満」を意味します(less than)

この2つを組み合わせることで、「開始日以上・終了日未満」という期間条件を表現できます。

2. サンプルコレクションの作成

まずは動作確認用のコレクションを作成しましょう。ここでは注文情報を管理する order コレクションに、2件のドキュメントを挿入します。

> db.order.insert({"OrderId":1,"OrderAddrees":"US","OrderDateTime":ISODate("2019-02-19")});
WriteResult({ "nInserted" : 1 })

> db.order.insert({"OrderId":2,"OrderAddrees":"UK","OrderDateTime":ISODate("2019-02-26")});
WriteResult({ "nInserted" : 1 })

挿入が成功すると、nInserted : 1 という結果が返されます。

3. 登録済みドキュメントの確認

find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。pretty() を付けると、見やすい整形された形式で出力されます。

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

実行結果は以下の通りです。

{
    "_id" : ObjectId("5c6c072068174aae23f5ef57"),
    "OrderId" : 1,
    "OrderAddrees" : "US",
    "OrderDateTime" : ISODate("2019-02-19T00:00:00Z")
}
{
    "_id" : ObjectId("5c6c073568174aae23f5ef58"),
    "OrderId" : 2,
    "OrderAddrees" : "UK",
    "OrderDateTime" : ISODate("2019-02-26T00:00:00Z")
}

4. 2つの日付の間のドキュメントを検索するクエリ

それでは本題です。次のクエリでは、2019年2月10日以上・2019年2月21日未満の日付を持つドキュメントを検索しています。

> db.order.find({"OrderDateTime":{ $gte:ISODate("2019-02-10"), $lt:ISODate("2019-02-21") }}).pretty();

実行結果は以下の通りです。

{
    "_id" : ObjectId("5c6c072068174aae23f5ef57"),
    "OrderId" : 1,
    "OrderAddrees" : "US",
    "OrderDateTime" : ISODate("2019-02-19T00:00:00Z")
}

5. 結果のポイント

この例では、OrderDateTime2019-02-19 のドキュメントだけが該当し、2019-02-26 のドキュメントは範囲外のため除外されました。

なお、$lt は「未満」なので終了日は含まれません。終了日も含めたい場合は、$lte(以下)を使用してください。また、日付は必ず ISODate() 形式で指定することで、文字列比較による誤動作を防げます。

  1. Python Pandas – 2つの日付の間でDataFrameをフィルタリングする方法

    Pandasで特定の2つの日付の間にあるデータだけを抽出したい場合は、dataframe.locを使うのが便利です。比較演算子と論理演算子を組み合わせることで、日付範囲によるフィルタリングをシンプルに実現できます。 まず、必要なライブラリをインポートします。 import pandas as pd サンプルデータの準備 次に、購入日付きの車データを格納した辞書(リストの辞書)を作成します。 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_Purchase: [2021-07-10, 2021-08-12

  2. 2つのNumPy配列の共通要素(積集合)を求める方法

    この記事では、2つのNumPy配列の共通部分(積集合)を求める方法を解説します。2つの配列の「共通部分」とは、元の両方の配列に共通して含まれる要素だけを集めた配列のことです。NumPyにはこの目的に特化した np.intersect1d() 関数が用意されており、わずか1行のコードで共通要素を抽出できます。アルゴリズム処理の手順は以下の通りです。NumPyをインポートします。2つのNumPy配列を定義します。np.intersect1d() 関数を使って、配列同士の共通部分を求めます。共通する要素からなる配列を出力します。サンプルコードimport numpy as np array_1 =