HOWTO · MongoDB

MongoDB のフィールドを比較する

このチュートリアルでは、MongoDB のフィールドを比較する方法について説明します。

このページの内容

場合によっては、2つのフィールドを比較してドキュメントを見つける必要があります。 たとえば、MongoDB コレクション内のドキュメントを選択するときに、シリアル番号と ID 番号を考慮する必要がある場合があります。 これについては、このチュートリアルの後半で説明します。

この記事では、MongoDB で 2つのフィールドを比較する方法について説明します。 また、トピックを簡単にするための説明とともに、関連する例を示します。

MongoDB のフィールドを比較する

この目的で使用できる手法は 2つあります。 MongoDB コレクションからドキュメントを検索または抽出するために使用される組み込みメソッド find() を両方の手法に使用します。

最初の手法では、主に特定の条件に一致するキーワード $where を使用します。 2 番目の手法では、キーワード $expr を使用して単純な集計を使用します。これにより、集計式を引数として実装できます。

わかりやすくするために例を見てみましょう。

MongoDB で 2つのフィールドを比較する例

以下の例では、MongoDB の 2つのフィールドを比較する方法を示します。 sl フィールドと id フィールドを比較します。

さて、この目的のためのコマンドは次のとおりです。

$where キーワードの使用:

db.mycolletion.find( { $where : "this.sl < this.id" } );

$expr キーワードの使用:

db.mycolletion.find({$expr:{$lt:["$sl", "$id"]}})

上記のコマンドで、$lt は比較演算子です。 必要に応じて使用できる他の比較演算子があります。

MongoDB で利用可能な比較演算子

以下では、MongoDB の集計で使用される使用可能な比較演算子を共有しました。

  • $eq - これは等号演算子を表します。
  • $ne - これは Not Equal 演算子を表します。
  • $gt - これは大なり演算子を表します。
  • $gte - これは、より大きいか等しい演算子を表します。
  • $lt - これは、Less Than 演算子を表します。
  • $lte - これは、Less Than or Equal 演算子を表します。
  • $in - これは、配列内の任意の値に一致します。
  • $nin - これは、配列内のどの値とも一致しません。

ここで、上記で共有された両方のコマンドで、以下と同じ結果が得られます。

{ _id: ObjectId("6371fd850f19826ee6ca5138"),
  sl: 0,
  Name: 'Alen',
  id: '3'
}

注: 適切なコレクションに含まれているかどうかを確認してください。 特定のコレクションをオンにするには、コマンド use YourDB を使用します。 そうしないと、エラーが発生します。

この記事に示されているコマンドは MongoDB データベース用であり、コマンドは MongoDB コンソールで実行する必要があることに注意してください。