Thêm thuộc tính vào đối tượng mongodb
Bạn có thể sử dụng lệnh cập nhật cùng với forEach() cho bộ sưu tập lớn. Trước tiên chúng ta hãy tạo một bộ sưu tập với các tài liệu Show
>db.addingNewPropertyDemo.insertOne({"StudentName":"John","StudentAge":23,"CountryName":"US"}); { "acknowledged" : true, "insertedId" : ObjectId("5ca1e61866324ffac2a7dc56") } >db.addingNewPropertyDemo.insertOne({"StudentName":"David","StudentAge":21,"CountryName":"AUS"}); { "acknowledged" : true, "insertedId" : ObjectId("5ca1e62366324ffac2a7dc57") } >db.addingNewPropertyDemo.insertOne({"StudentName":"Bob","StudentAge":21,"CountryName":"UK"}); { "acknowledged" : true, "insertedId" : ObjectId("5ca1e62d66324ffac2a7dc58") } Sau đây là truy vấn để 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() > db.addingNewPropertyDemo.find().pretty(); Điều này sẽ tạo ra đầu ra sau { "_id" : ObjectId("5ca1e61866324ffac2a7dc56"), "StudentName" : "John", "StudentAge" : 23, "CountryName" : "US" } { "_id" : ObjectId("5ca1e62366324ffac2a7dc57"), "StudentName" : "David", "StudentAge" : 21, "CountryName" : "AUS" } { "_id" : ObjectId("5ca1e62d66324ffac2a7dc58"), "StudentName" : "Bob", "StudentAge" : 21, "CountryName" : "UK" } Sau đây là truy vấn để thêm thuộc tính mới vào mỗi tài liệu trong một bộ sưu tập lớn > db.addingNewPropertyDemo.find().forEach(function(data){ db.addingNewPropertyDemo.update({_id: data._id}, {$set: { StudentNameInUpperCase: data.StudentName.toUpperCase() }}) }); Hãy để chúng tôi kiểm tra một tài sản mới được thêm vào hay không > db.addingNewPropertyDemo.find().pretty(); Sau đây là đầu ra cũng hiển thị thuộc tính mới { "_id" : ObjectId("5ca1e61866324ffac2a7dc56"), "StudentName" : "John", "StudentAge" : 23, "CountryName" : "US", "StudentNameInUpperCase" : "JOHN" } { "_id" : ObjectId("5ca1e62366324ffac2a7dc57"), "StudentName" : "David", "StudentAge" : 21, "CountryName" : "AUS", "StudentNameInUpperCase" : "DAVID" } { "_id" : ObjectId("5ca1e62d66324ffac2a7dc58"), "StudentName" : "Bob", "StudentAge" : 21, "CountryName" : "UK", "StudentNameInUpperCase" : "BOB" } Nhìn vào đầu ra mẫu ở trên, thuộc tính StudentNameInUpperCase được thêm vào Toán tử Không nên sử dụng toán tử Đối tượng lồng nhauCác giá trị trong một đối tượng có thể là một đối tượng khác Thí dụmyObj = { Bạn có thể truy cập các đối tượng lồng nhau bằng ký hiệu dấu chấm hoặc ký hiệu dấu ngoặc hoặc là hoặc là hoặc là Mảng và đối tượng lồng nhauGiá trị trong đối tượng có thể là mảng và giá trị trong mảng có thể là đối tượng Thí dụconst myObj = { Để truy cập các mảng bên trong mảng, hãy sử dụng vòng lặp for-in cho mỗi mảng Thí dụcho (hãy để tôi trong myObj. ô tô) { cho (đặt j trong myObj. ô tô [tôi]. người mẫu) { x += myObj. ô tô [tôi]. mô hình [j]; } }Tự mình thử » Thuộc tính tài sảnTất cả tài sản đều có tên. Ngoài ra chúng còn có giá trị Giá trị là một trong những thuộc tính của thuộc tính các thuộc tính khác là. có thể đếm được, có thể định cấu hình và có thể ghi Các thuộc tính này xác định cách truy cập thuộc tính (có thể đọc được không?, có thể ghi không?) Trong JavaScript, tất cả các thuộc tính có thể được đọc, nhưng chỉ có thể thay đổi thuộc tính giá trị (và chỉ khi thuộc tính có thể ghi được) (ECMAScript 5 có các phương thức để nhận và đặt tất cả các thuộc tính thuộc tính) Thuộc tính nguyên mẫuCác đối tượng JavaScript kế thừa các thuộc tính của nguyên mẫu của chúng Từ khóa Bắt đầu từ MongoDB 5. 0, toán tử cập nhật xử lý các trường tài liệu có tên dựa trên chuỗi theo thứ tự từ điển. Các trường có tên số được xử lý theo thứ tự số. Xem để biết chi tiết Nếu trường không có trong tài liệu để cập nhật, hãy thêm trường mảng với giá trị là phần tử của nó Nếu trường không phải là một mảng, hoạt động sẽ thất bại Nếu giá trị là một mảng, hãy thêm toàn bộ mảng dưới dạng một phần tử. Để thêm riêng từng phần tử của giá trị, hãy sử dụng công cụ sửa đổi với. Ví dụ, xem. Để biết danh sách các công cụ sửa đổi có sẵn cho , hãy xem Bắt đầu từ MongoDB 5. 0, không còn phát sinh lỗi khi bạn sử dụng toán tử cập nhật như với biểu thức toán hạng trống ( 4 ). Bản cập nhật trống dẫn đến không có thay đổi nào và không có mục nào được tạo (có nghĩa là thao tác này không hoạt động)sửa đổiBạn có thể sử dụng toán tử với các công cụ sửa đổi sau bổ nghĩa Sự miêu tả Nối nhiều giá trị vào trường mảng Giới hạn số phần tử mảng. Yêu cầu sử dụng công cụ sửa đổi Sắp xếp thứ tự các phần tử của mảng. Yêu cầu sử dụng công cụ sửa đổi Chỉ định vị trí trong mảng để chèn các phần tử mới. Yêu cầu sử dụng công cụ sửa đổi. Không có công cụ sửa đổi, nó sẽ nối các phần tử vào cuối mảng Khi được sử dụng với các từ bổ nghĩa, toán tử có dạng
Quá trình xử lý thao tác với các công cụ sửa đổi diễn ra theo thứ tự sau, bất kể thứ tự xuất hiện của các công cụ sửa đổi
ví dụTạo bộ sưu tập 7
Nối một giá trị vào một mảngVí dụ sau nối thêm 8 vào mảng 9________số 8_______ đầu ra ví dụ
Nối một giá trị vào mảng trong nhiều tài liệuThêm các tài liệu sau vào bộ sưu tập 7
Thao tác sau đây nối thêm 2 vào mảng 9 trong mỗi tài liệu
Để xác nhận rằng mỗi mảng 9 bao gồm 2, hãy chạy thao tác sau
Hoạt động trả về kết quả sau
Nối nhiều giá trị vào một mảngSử dụng với công cụ sửa đổi để nối nhiều giá trị vào trường mảng Ví dụ sau nối từng phần tử của 8 vào mảng 9 cho tài liệu trong đó trường 0 bằng 1
Sử dụng Toán tử { $push: { |