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

MongoDB $ pullを使用してアレイ内のドキュメントを削除するにはどうすればよいですか?


配列内のドキュメントを削除するには、$pull演算子とともにupdateコマンドを使用する必要があります。ドキュメントを使用してコレクションを作成しましょう。以下はクエリです

> db.deleteDocumentsDemo.insertOne(
... {
...    "_id":100,
...    "StudentsDetails" : [
...       {
...          "StudentId" : 1,
...          "StudentName" : "John"
...       },
...       {
...          "StudentId" : 2,
...          "StudentName" : "Carol"
...       },
...       {
...          "StudentId" : 3,
...          "StudentName" : "Sam"
...       },
...       {
...          "StudentId" : 4,
...          "StudentName" : "Mike"
...       }
...    ]
... }
...
... );
{ "acknowledged" : true, "insertedId" : 100 }
> db.deleteDocumentsDemo.insertOne(
... {
...    "_id":200,
...    "StudentsDetails" : [
...       {
...          "StudentId" : 5,
...          "StudentName" : "David"
...       },
...       {
...          "StudentId" : 6,
...          "StudentName" : "Ramit"
...       },
...       {
...          "StudentId" : 7,
...          "StudentName" : "Adam"
...       },
...       {
...          "StudentId" : 8,
...          "StudentName" : "Larry"
...       }
...    ]
... }
...
... );
{ "acknowledged" : true, "insertedId" : 200 }

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです

> db.deleteDocumentsDemo.find().pretty();

これにより、次の出力が生成されます

{
   "_id" : 100,
   "StudentsDetails" : [
      {
         "StudentId" : 1,
         "StudentName" : "John"
      },
      {
         "StudentId" : 2,
         "StudentName" : "Carol"
      },
      {
         "StudentId" : 3,
         "StudentName" : "Sam"
      },
      {
         "StudentId" : 4,
         "StudentName" : "Mike"
      }
   ]
}
{
   "_id" : 200,
   "StudentsDetails" : [
      {
         "StudentId" : 5,
         "StudentName" : "David"
      },
      {
         "StudentId" : 6,
         "StudentName" : "Ramit"
      },
      {
         "StudentId" : 7,
         "StudentName" : "Adam"
      },
      {
         "StudentId" : 8,
         "StudentName" : "Larry"
      }
   ]
}

以下は、アレイ内のドキュメントを削除するためのクエリです

> db.deleteDocumentsDemo.update({},
... {$pull: {StudentsDetails: {StudentName: "David"}}},
... {multi: true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 1 })

ドキュメントが削除されているかどうかを確認しましょう。以下はクエリです

> db.deleteDocumentsDemo.find().pretty();

これにより、次の出力が生成されます

{
   "_id" : 100,
   "StudentsDetails" : [
      {
         "StudentId" : 1,
         "StudentName" : "John"
      },
      {
         "StudentId" : 2,
         "StudentName" : "Carol"
      },
      {
         "StudentId" : 3,
         "StudentName" : "Sam"
      },
      {
         "StudentId" : 4,
         "StudentName" : "Mike"
      }
   ]
}
{
   "_id" : 200,
   "StudentsDetails" : [
      {
         "StudentId" : 6,
         "StudentName" : "Ramit"
      },
      {
         "StudentId" : 7,
         "StudentName" : "Adam"
      },
      {
         "StudentId" : 8,
         "StudentName" : "Larry"
      }
   ]
}

上記のサンプル出力を見てください。値が5の「StudentId」、つまりStudentName「David」が削除されています。


  1. MongoDBのドキュメントから配列値を削除するにはどうすればよいですか?

    配列値を削除するには、MongoDBで$pullを使用します。 $ pull演算子は、既存の配列から、指定された条件に一致する1つまたは複数の値のすべてのインスタンスを削除します。 まず、ドキュメントを使用してコレクションを作成しましょう- > db.demo535.insertOne( ... { ... ...    "studentId" : "101", ...    "studentName" : "Chris", ...    &quo

  2. 配列内で一致したオブジェクトの数に基づいてMongoDBでドキュメントを見つけるにはどうすればよいですか?

    例を見て、ドキュメントを使用してコレクションを作成しましょう- > db.demo694.insertOne( ...    { ...       "details" : ...       [ ...          { ...             "Name" : "Chris", ...