
MongoDBは柔軟で強力なデータベースで、Reactと組み合わせて使うことでアプリケーションのデータベース操作を効果的に行うことができます。
この記事では、MongoDBでよく使う8つの比較演算子 $eq(等しい)、$ne(等しくない)、$in(含まれる)、$nin(含まれない) 、 $lt(未満)、$gt(より大きい)、$lte(以下)、$gte(以上)を使って、データを絞り込んで取得する方法をわかりやすく詳しく解説します。
MongoDBの比較演算子とは
MongoDBの比較演算子は、データベースからドキュメントを取得する際に条件を指定するための重要なツールです。以下の8つの主要な比較演算子を詳しく見ていきます。
- $eq
-
等しい
- $ne
-
等しくない
- $in
-
含まれる
- $nin
-
含まれない
- $lt
-
未満
- $gt
-
より大きい
- $lte
-
以下
- $gte
-
以上
MongoDBでは、データを絞り込むためにこれらの比較演算子を使用してクエリを行います。
比較演算子の使用例とReactのサンプルコード
ここからは、MongoDBでよく使う8つの比較演算子の内、前半を$eq、$ne、$in、$ninと 、後半の $lt、$gt、$lte、$gteの2章に分けて解説します。
サンプルデータ
以下は本記事で使用するサンプルコレクションです。
このサンプルコレクションを基に、どのようにデータを取得しているか確認してください。
// サンプルコレクション
db.collection.insertMany([
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 },
{ name: "Charlie", age: 35 },
{ name: "David", age: 40 },
]);
$eq、$ne、$in、$nin の比較演算子
ここから前半の$eq、$ne、$in、$ninの比較演算子の使用例をご紹介します。
$eq(等しい)
$eq 比較演算子を使用して、age フィールドが25歳のドキュメントを取得します。
// MongoDBのコレクションからageが25歳のドキュメントを取得
db.collection.find({ age: { $eq: 25 } });
$ne(等しくない)
$ne 比較演算子を使用して、age フィールドが25歳でないドキュメントを取得します。
// MongoDBのコレクションからageが25歳でないドキュメントを取得
db.collection.find({ age: { $ne: 25 } });
$in(含まれる)
$in 比較演算子を使用して、age フィールドが25歳または30歳のドキュメントを取得します。
// MongoDBのコレクションからageが25歳または30歳のドキュメントを取得
db.collection.find({ age: { $in: [25, 30] } });
$nin(含まれない)
$nin 比較演算子を使用して、age フィールドが25歳または30歳でないドキュメントを取得します。
// MongoDBのコレクションからageが25歳または30歳でないドキュメントを取得
db.collection.find({ age: { $nin: [25, 30] } });
Reactを使ったサンプルコード
ReactとMongoDBを組み合わせて、上記の比較演算子を使用するサンプルコードです。
const MongoClient = require("mongodb").MongoClient;
// MongoDB接続情報
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
// データベース名とコレクション名
const dbName = "mydb";
const collectionName = "mycollection";
async function main() {
try {
// MongoDBに接続
await client.connect();
const db = client.db(dbName);
const collection = db.collection(collectionName);
// $eqを使用してageが30歳のドキュメントを取得
const equalTo30 = await collection.find({ age: { $eq: 30 } }).toArray();
console.log("年齢が30歳の人:", equalTo30);
// $neを使用してageが30歳でないドキュメントを取得
const notEqualTo30 = await collection.find({ age: { $ne: 30 } }).toArray();
console.log("年齢が30歳でない人:", notEqualTo30);
// $inを使用してageが30歳または35歳のドキュメントを取得
const inArray = await collection.find({ age: { $in: [30, 35] } }).toArray();
console.log("年齢が30歳または35歳の人:", inArray);
// $ninを使用してageが30歳または35歳でないドキュメントを取得
const notInArray = await collection.find({ age: { $nin: [30, 35] } }).toArray();
console.log("年齢が30歳または35歳でない人:", notInArray);
} finally {
// MongoDB接続をクローズ
await client.close();
}
}
// 関数を呼び出してサンプルコードを実行
main().catch(console.error);
$lt、$gt、$lte、$gte の比較演算子
ここから後半の$lt、$gt、$lte、$gteの比較演算子の使用例をご紹介します。
$lt(未満)
$lt 比較演算子を使用して、age フィールドが指定した値よりも小さい値を持つドキュメントを取得します。
// MongoDBのコレクションからageが30未満のドキュメントを取得する例
db.collection.find({ age: { $lt: 30 } });
$gt(より大きい)
$gt 比較演算子を使用して、age フィールドが指定した値よりも大きい値を持つドキュメントを取得します。
// MongoDBのコレクションからageが30より大きいドキュメントを取得する例
db.collection.find({ age: { $gt: 30 } });
$lte(以下)
$lte 比較演算子を使用して、age フィールドが指定した値以下の値を持つドキュメントを取得します。
// MongoDBのコレクションからageが30以下のドキュメントを取得する例
db.collection.find({ age: { $lte: 30 } });
$gte(以上)
$gte 比較演算子を使用して、age フィールドが指定した値以上の値を持つドキュメントを取得します。
// MongoDBのコレクションからageが30以上のドキュメントを取得する例
db.collection.find({ age: { $gte: 30 } });
Reactを使ったサンプルコード
ReactとMongoDBを組み合わせて、上記の比較演算子を使用するサンプルコードです。
const MongoClient = require("mongodb").MongoClient;
// MongoDB接続情報
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
// データベース名とコレクション名
const dbName = "mydb";
const collectionName = "mycollection";
async function main() {
try {
// MongoDBに接続
await client.connect();
const db = client.db(dbName);
const collection = db.collection(collectionName);
// $ltを使用してageが30未満のドキュメントを取得
const youngerThan30 = await collection.find({ age: { $lt: 30 } }).toArray();
console.log("年齢が30未満の人:", youngerThan30);
// $gtを使用してageが30より大きいドキュメントを取得
const olderThan30 = await collection.find({ age: { $gt: 30 } }).toArray();
console.log("年齢が30より大きい人:", olderThan30);
// $lteを使用してageが30以下のドキュメントを取得
const lessThanOrEqual30 = await collection.find({ age: { $lte: 30 } }).toArray();
console.log("年齢が30以下の人:", lessThanOrEqual30);
// $gteを使用してageが30以上のドキュメントを取得
const greaterThanOrEqual30 = await collection.find({ age: { $gte: 30 } }).toArray();
console.log("年齢が30以上の人:", greaterThanOrEqual30);
} finally {
// MongoDB接続をクローズ
await client.close();
}
}
// 関数を呼び出してサンプルコードを実行
main().catch(console.error);
まとめ
今回はMongoDBの比較演算子を使用して、Reactアプリケーションからデータを取得する方法について詳しく解説しました。
これらの比較演算子を活用することで、MongoDBデータベースから特定の条件を持つドキュメントを効果的に取得できます。
異なる比較演算子を使用してデータを取得する際に、指定した条件に合ったドキュメントを抽出できます。
- Original:https://minory.org/mongodb-comparison-operator.html
- Source:Minory
- Author:管理者