1. ホーム
  2. データベース
  3. モンゴルディーブ

MongoDBでよく使われるcrudステートメント

2022-01-19 21:48:18

MongoDBのCRUDは、面倒なSQL文に比べると非常にシンプルでモダンです。

データの作成(CREATE)

MongoDBには、データを作成する方法が2つあります。

db.crud.insert({name: 'coder', gender: 'male'});
db.crud.save({name: ' island coder', gender: 'male'});


saveメソッドは、データが_id属性を保持している場合は更新し、そうでない場合は新しいデータを挿入する点が異なります。MongoDB 3.2 からは insertOne と insertMany というふたつの新しい挿入メソッドが追加され、 insert メソッドは非推奨とされました。

db.crud.insertOne({name: 'coder', gender: 'male'});
db.crud.insertMany([{name: 'island coder', gender: 'male'},{name: 'programmer', gender: 'female'}]);


データを更新する(Update)

更新の前にクエリのマッチ条件があり、その後に更新されるデータが続きます。

# Give a coder a sex change
db.crud.update({name: 'coder'}, {name: 'coder', gender: 'female'});


updateメソッドのデフォルトは、すべてのデータを更新するのではなく、一致するデータを見つけることなので、複数を更新する必要がある場合は、最後にmulti: trueという属性を追加する必要があります。

# Degenerate all coders
db.crud.update({name: 'coder'}, {name: 'coder', gender: 'female'}, {multi: true});


MongoDB バージョン 3.2 では updateOne と updateMany メソッドが追加され、それぞれ一個と多数のデータを更新できるようになりました。

# Restore the gender of the coder
db.crud.updateOne({name: 'coder'}, {$set: {name: 'island coder', gender: 'male'}});
db.crud.updateMany({name: 'yard farmer'}, {$set: {name: 'island yard farmer', gender: 'male'}});


MongoDB の新しいバージョンでは、 updateOne と updateMany はアトミックな操作であることが必須です。つまり、誤ってドキュメント全体を上書きしてしまわないように、更新するフィールドを $set で指定する必要があります。そうでない場合は、エラーが報告されます: update operation document must contain atomic operators.** It is recommended to use ****updateOne** and ***updateMany** for safer and more explicit updates.It is recommended to use ****updateOne** and ***updateMany** for safer and more explicit updates. ドキュメントを置き換える必要がある場合は、replaceOneを使用することができます。

db.crud.replaceOne({name: 'Island coder'}, {name: 'Programmer Hope', gender: 'Female'});


削除(DELETE)

バージョン 3.2 以降の MongoDB の delete メソッドは deleteOne と deleteMany で、1 つのマッチを削除する場合と複数のマッチを削除する場合にそれぞれ対応する分布になっています。

db.crud.deleteOne({name: 'Program Hope'});
db.crud.deleteMany({gender: 'female'});


以前のバージョンでは、removeメソッドが使用されていました。removeの第2引数にtrueを指定すると、1つのマッチのみが削除されることを意味します。

db.crud.remove({name: 'Program Hope'});
db.crud.remove({gender: 'female'}, true);


特に、空のクエリ・パラメータ・オブジェクトでremoveメソッドを使用すると、すべてのデータを削除することになり、ライブラリを削除して逃げようとしていることに注意してください。

# Be cautious about removing the library
db.crud.remove({});


データを読み込む(READ)

findはすべての結果を返しますが、もちろんlimitを使って返される項目の数を制限することができます。

# Query all the data
db.crud.find();
# Return only 2 data items
db.crud.find().limit(2);
# Query data with the name Tom
db.crud.find({name: 'Tom'});


返された結果を装飾する必要がある場合は、pretty() メソッドを使用することができます。

db.crud.find().limit(2).pretty();


特定のフィールドを返したい場合は、後で返されるフィールドを指定することができます。もし _id を除外したい場合は、指定されたフィールドを表示し、他のフィールドは含めないようにしてください。そうしないと、エラーが報告されます。そうでない場合は、次のようなエラーが報告されます。

# Return only the _id and name fields
db.crud.find({name: 'Tom'}, {name: 1});
# Do not return the _id
db.crud.find({name: 'Tom'}, {_id: 0, name: 1});


上記はMongoDB crud statementの詳細です。MongoDB crud statementについての詳しい情報は、スクリプトハウスの他の関連記事に注目してください!MongoDB crud statementは、MongoDBに関連した文書です。