0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【MongoDB】CRUD操作チートシート

Posted at

はじめに

MongoDBでのデータ操作の基本をまとめました。CRUD操作(Create、Read、Update、Delete)の実装例を中心に、よく使う検索演算子についても解説します。

CRUD操作の全体像

データを挿入する(Create)

MongoDBではドキュメント(JSONライクなデータ構造)をコレクションに格納します。

1つのドキュメントを挿入

db.collectionName.insertOne({ name: "太郎", age: 25 });

複数のドキュメントを挿入

配列を使って一度に複数のドキュメントを挿入できます。

db.collectionName.insertMany([
  { name: "太郎", age: 25 },
  { name: "花子", age: 22 },
  { name: "次郎", age: 30 },
]);

データを検索する(Read)

すべてのドキュメントを取得

db.collectionName.find();

条件に一致するドキュメントを取得

検索条件を指定してデータを絞り込みます。

// 年齢が25歳の人を検索
db.collectionName.find({ age: 25 });

// 年齢が25歳以上の人を検索
db.collectionName.find({ age: { $gte: 25 } });

// 年齢が20歳以上30歳以下の人を検索
db.collectionName.find({ age: { $gte: 20, $lte: 30 } });

1つのドキュメントを取得

条件に一致する最初の1件だけを取得したい場合に使用します。

db.collectionName.findOne({ name: "太郎" });

特定のフィールドだけを取得

取得するフィールド(データ項目)を絞り込むことで、パフォーマンスを改善できます。

// nameフィールドだけを表示(_idは自動的に含まれる)
db.collectionName.find({}, { name: 1 });

// _idを除外してnameだけを表示
db.collectionName.find({}, { name: 1, _id: 0 });

結果を並び替える

// 年齢の昇順(1が昇順)
db.collectionName.find().sort({ age: 1 });

// 年齢の降順(-1が降順)
db.collectionName.find().sort({ age: -1 });

結果を制限する

ページネーション機能の実装などに使用します。

// 最初の5件だけを取得
db.collectionName.find().limit(5);

// 最初の3件をスキップして、次の5件を取得
db.collectionName.find().skip(3).limit(5);

データを更新する(Update)

1つのドキュメントを更新

更新演算子を使ってフィールドの値を変更します。

// $set: 特定のフィールドを更新
db.collectionName.updateOne({ name: "太郎" }, { $set: { age: 26 } });

// $inc: 数値を増減
db.collectionName.updateOne({ name: "太郎" }, { $inc: { age: 1 } });

// $push: 配列に要素を追加
db.collectionName.updateOne({ name: "太郎" }, { $push: { hobbies: "読書" } });

複数のドキュメントを更新

条件に一致するすべてのドキュメントを一度に更新できます。

// 年齢が25歳以下の人全員の年齢を1増やす
db.collectionName.updateMany({ age: { $lte: 25 } }, { $inc: { age: 1 } });

ドキュメントを置き換える

ドキュメント全体を新しいデータで置き換えます。指定したフィールド以外は削除されるので注意が必要です。

db.collectionName.replaceOne(
  { name: "太郎" },
  { name: "太郎", age: 26, city: "東京" }
);

データを削除する(Delete)

1つのドキュメントを削除

db.collectionName.deleteOne({ name: "太郎" });

複数のドキュメントを削除

// 年齢が30歳以上の人を全員削除
db.collectionName.deleteMany({ age: { $gte: 30 } });

すべてのドキュメントを削除

空のオブジェクトを条件に指定すると、コレクション内のすべてのドキュメントが削除されます。

db.collectionName.deleteMany({});

よく使う検索演算子

MongoDBでは演算子を使って柔軟な検索条件を指定できます。

比較演算子

// $eq: 等しい
db.collectionName.find({ age: { $eq: 25 } });

// $ne: 等しくない
db.collectionName.find({ age: { $ne: 25 } });

// $gt: より大きい
db.collectionName.find({ age: { $gt: 25 } });

// $gte: 以上
db.collectionName.find({ age: { $gte: 25 } });

// $lt: より小さい
db.collectionName.find({ age: { $lt: 25 } });

// $lte: 以下
db.collectionName.find({ age: { $lte: 25 } });

// $in: 配列内のいずれかに一致
db.collectionName.find({ age: { $in: [20, 25, 30] } });

// $nin: 配列内のいずれにも一致しない
db.collectionName.find({ age: { $nin: [20, 25, 30] } });

論理演算子

// $and: 複数条件のAND
db.collectionName.find({
  $and: [{ age: { $gte: 20 } }, { age: { $lte: 30 } }],
});

// $or: 複数条件のOR
db.collectionName.find({
  $or: [{ name: "太郎" }, { age: { $gte: 30 } }],
});

フィールド存在確認

// $exists: フィールドの存在確認
db.collectionName.find({ email: { $exists: true } });

これらの基本操作を組み合わせることで、MongoDBでのデータ操作がスムーズに行えるようになります。実際のプロジェクトでは、これらの操作をアプリケーションコードから呼び出して使用することになりますね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?