Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

문서 내 배열 내부의 개체를 업데이트하기 위한 MongoDB 구문은 무엇입니까?

<시간/>

이를 위해 MongoDB에서 findOneAndUpdate()를 사용합니다. findOneAndUpdate() 메서드는 필터 및 정렬 기준에 따라 단일 문서를 업데이트합니다.

문서로 컬렉션을 만들자 −

> 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
      }
   ]
}