Computer >> Máy Tính >  >> Lập trình >> MongoDB

MongoDB Gia tăng giá trị bên trong mảng lồng nhau?

Bạn có thể sử dụng toán tử vị trí $ cho việc này. Để hiểu khái niệm trên, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

> db.incrementValueInNestedArrayDemo.insertOne(
   ... {"UniqueId":1,
      ... "StudentDetails":
      ... [
         ... {
            ... "StudentId":101,
            ... "StudentMarks":97
         ... },
         ... {
            ... "StudentId":103,
            ... "StudentMarks":99
         ... },
         ... {
            ... "StudentId":105,
            ... "StudentMarks":69
         ... },
         ... {
            ... "StudentId":107,
            ... "StudentMarks":59
         ... }
      ... ]
   ... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c77dd71fc4e719b197a12f7")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -

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

Sau đây là kết quả -

{
   "_id" : ObjectId("5c77dd71fc4e719b197a12f7"),
   "UniqueId" : 1,
   "StudentDetails" : [
      {
         "StudentId" : 101,
         "StudentMarks" : 97
      },
      {
         "StudentId" : 103,
         "StudentMarks" : 99
      },
      {
         "StudentId" : 105,
         "StudentMarks" : 92
      },
      {
         "StudentId" : 107,
         "StudentMarks" : 59
      }
   ]
}

Đây là truy vấn để tăng một giá trị trong mảng lồng nhau -

> db.incrementValueInNestedArrayDemo.update({UniqueId:1,"StudentDetails.StudentId":107},
{$inc:{"StudentDetails.$.StudentMarks":1}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Hãy để chúng tôi kiểm tra giá trị mảng lồng nhau có được tăng lên hay không trong bộ sưu tập ở trên với StudentId 107 -

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

Sau đây là kết quả -

{
   "_id" : ObjectId("5c77dd71fc4e719b197a12f7"),
   "UniqueId" : 1,
   "StudentDetails" :
   [
      {
         "StudentId" : 101,
         "StudentMarks" : 97
      },
      {
         "StudentId" : 103,
         "StudentMarks" : 99
      },
      {
         "StudentId" : 105,
         "StudentMarks" : 92
      },
      {
         "StudentId" : 107,
         "StudentMarks" : 60
      }
   ]
}

Nhìn vào kết quả đầu ra mẫu, tên trường “StudentMarks” đã được cập nhật từ 59 thành 60, nghĩa là tăng thêm 1.