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

ドキュメント内の配列内のオブジェクトを更新するためのMongoDB構文?


これには、MongoDBでfindOneAndUpdate()を使用します。 findOneAndUpdate()メソッドは、フィルターと並べ替えの基準に基づいて1つのドキュメントを更新します。

ドキュメントを使用してコレクションを作成しましょう-

> db.demo553.insertOne(
... {
...    id:101,
...    "Name":"John",
...    midExamDetails:
...    [
...       {"SubjectName":"MySQL","Marks":70},
...       {"SubjectName":"MongoDB","Marks":35}
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8e3da19e5f92834d7f05ed")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo553.find();

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

{ "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"), "id" : 101, "Name" : "John", "midExamDetails" : [
   { "SubjectName" : "MySQL", "Marks" : 70 },
   { "SubjectName" : "MongoDB", "Marks" : 35 } 
] }

以下は、MongoDBドキュメント内の配列内のオブジェクトを更新するための構文へのクエリです-

> db.demo553.findOneAndUpdate(
...    { id:101,
...       "midExamDetails.SubjectName":"MongoDB"
...    },
...    { $set:{
...       'midExamDetails.$.Marks': 97
...    }
... }
... );
{
   "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
   "id" : 101,
   "Name" : "John",
   "midExamDetails" : [
      {
         "SubjectName" : "MySQL",
         "Marks" : 70
      },
      {
         "SubjectName" : "MongoDB",
         "Marks" : 35
      }
   ]
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

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

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

{
   "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
   "id" : 101,
   "Name" : "John",
   "midExamDetails" : [
      {
         "SubjectName" : "MySQL",
         "Marks" : 70
      },
      {
         "SubjectName" : "MongoDB",
         "Marks" : 97
      }
   ]
}

  1. _idのMongoDBコレクションを更新していますか?

    _idを更新するには、MongoDBで$setを使用します。ドキュメントを使用してコレクションを作成しましょう- db.demo741.insertOne({SubjectName:"MySQL"}); {    "acknowledged" : true,    "insertedId" : ObjectId("5ead718657bb72a10bcf0672") } > db.demo741.insertOne({SubjectName:"C"}

  2. MongoDBの配列に重複がないか確認しますか?

    配列内の重複をチェックするには、MongoDBでaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo756.insertOne({"SubjectName":["MySQL","MongoDB","Java"]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5eb01e0d5637cd592b2