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

MongoDBで条件に一致するドキュメントを1件だけ取得する方法

MongoDBで、指定した検索条件に一致するドキュメントを1件だけ取得したい場合は、findOne()メソッドを使用します。findOne()は、コレクション内から条件を満たすドキュメントのうち、最初に見つかった1件のみを返すメソッドです。

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

まずは、動作確認用のコレクションにドキュメントを挿入してみましょう。

> db.demo596.insertOne({_id:1,"FirstName":"John","LastName":"Smith"});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo596.insertOne({_id:2,"FirstName":"John","LastName":"Doe"});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo596.insertOne({_id:3,"FirstName":"Chris","LastName":"Brown"});
{ "acknowledged" : true, "insertedId" : 3 }
> db.demo596.insertOne({_id:4,"FirstName":"David","LastName":"Miller"});
{ "acknowledged" : true, "insertedId" : 4 }

find()メソッドですべてのドキュメントを表示する

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.demo596.find();

上記のクエリを実行すると、次のような出力が得られます。

{ "_id" : 1, "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : 2, "FirstName" : "John", "LastName" : "Doe" }
{ "_id" : 3, "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : 4, "FirstName" : "David", "LastName" : "Miller" }

findOne()でドキュメントを1件だけ取得する

ここで、ドキュメントを1件だけ取得するためのクエリを見てみましょう。

> db.demo596.findOne({"FirstName":"John"});

このクエリを実行すると、以下のように最初に一致した1件のドキュメントのみが返されます。

{ "_id" : 1, "FirstName" : "John", "LastName" : "Smith" }

なお、「John」というFirstNameを持つドキュメントは2件(_id:1と_id:2)存在しますが、findOne()はそのうち最初の1件しか返さない点に注意してください。すべての一致ドキュメントを取得したい場合は、従来どおりfind()を使用します。

  1. MongoDBでドキュメントを削除せずに1件だけ更新する方法(updateOneの使い方)

    MongoDBのコレクション内で1つのドキュメントだけを更新したい場合は、updateOne()メソッドを使用します。updateOne()は、指定したフィルター条件に一致した最初の1件のドキュメントのみを更新するメソッドです。既存のデータを削除することなく、特定のフィールドだけを安全に書き換えられます。サンプルコレクションの作成まず、動作確認用にドキュメントを含むコレクションを作成します。> db.demo495.insertOne({FirstName:Chris,Age:19});{ acknowledged : true, insertedId : ObjectI

  2. MongoDBでドキュメントの値を1つだけインクリメントする方法

    MongoDBでドキュメント内の特定の値だけを更新し、インクリメント(加算)したい場合は、update()メソッドと$inc演算子を組み合わせて使用します。$incは指定したフィールドの数値を増減させるための演算子で、他のフィールドに影響を与えることなくピンポイントで値を変更できるのが特徴です。サンプルコレクションの作成まず、ドキュメントを格納したコレクションを作成します。> db.demo698.insertOne({Score:78});{   "acknowledged" : true,   "insertedI