Hướng dẫn can we store array of objects in mongodb? - chúng ta có thể lưu trữ mảng các đối tượng trong mongodb không?
Tôi nhận được đối tượng Array từ phía trước và muốn lưu nó trong bộ sưu tập bằng NodeJS, MongoDB. Show
Đối tượng của tôi là:
Lược đồ bộ sưu tập của tôi là:
Tôi đang cố gắng với mã này:
Tôi nhận được lỗi này: Xuất bản ngày 25 tháng 5 năm 2020 Cập nhật ngày 02 tháng 6 năm 2020 1. Giới thiệuTrong cơ sở dữ liệu MongoDB, dữ liệu được lưu trữ trong các bộ sưu tập và một bộ sưu tập có tài liệu. Một tài liệu có các trường và giá trị, như trong JSON. Các loại trường bao gồm các loại vô hướng ( 7, 8, 9, v.v.) và các loại tổng hợp ( 0 và 1). Trong bài viết này, chúng tôi sẽ xem xét một ví dụ về việc sử dụng loại trường Array.collections and a collection has documents. A document has fields and values, like in a JSON. The field types include scalar types ( 7, 8, 9, etc.) and composite types ( 0 and 1). In this
article we will look at an example of using the array field type.Ví dụ là một ứng dụng nơi người dùng tạo bài đăng trên blog và viết nhận xét cho các bài đăng. Mối quan hệ giữa các bài viết và bình luận là một-nhiều; tức là, một bài đăng có thể có nhiều ý kiến. Chúng tôi sẽ xem xét một bộ sưu tập các bài đăng trên blog với ý kiến của họ. Đó là một tài liệu bài cũng sẽ lưu trữ các ý kiến liên quan. Trong mô hình tài liệu của MongoDB, dữ liệu mối quan hệ 1: N có thể được lưu trữ trong một bộ sưu tập; Đây là một hình thức dữ liệu không chuẩn hóa. Các dữ liệu liên quan được lưu trữ cùng nhau và có thể được truy cập (và cập nhật) cùng nhau. Các ý kiến được lưu trữ dưới dạng một mảng; Một mảng các đối tượng bình luận. Một tài liệu mẫu của các bài đăng trên blog với nhận xét:
Trong một ứng dụng, một bài đăng trên blog được tạo, nhận xét được thêm vào, truy vấn, sửa đổi hoặc bị xóa bởi người dùng. Trong ví dụ, chúng tôi sẽ viết mã để tạo một tài liệu bài đăng trên blog và thực hiện một số hoạt động CRUD với các bình luận cho bài đăng. 2. Tạo và truy vấn một tài liệuHãy tạo một tài liệu bài đăng trên blog. Chúng tôi sẽ sử dụng cơ sở dữ liệu có tên là 2 và một bộ sưu tập được gọi là 3. Mã được viết bằng 4Shell (giao diện JavaScript tương tác với MongoDB). Mongo Shell được bắt đầu từ dòng lệnh và được kết nối với máy chủ MongoDB. Từ vỏ:
Trả về kết quả 5 chỉ ra rằng một tài liệu mới được tạo. Đây là một sự thừa nhận phổ biến khi bạn thực hiện một hoạt động viết. Khi một tài liệu được chèn vào một bộ sưu tập lần đầu tiên, bộ sưu tập sẽ được tạo (nếu nó không tồn tại). Phương thức 6 chèn một tài liệu vào bộ sưu tập.Bây giờ, hãy truy vấn bộ sưu tập:query the collection :
Phương pháp 7 lấy một tài liệu phù hợp từ bộ sưu tập. Lưu ý các trường vô hướng 8 (loại chuỗi) và 9 (loại ngày) và trường mảng 0. Trong tài liệu mới được chèn không có ý kiến.3. Thêm phần tử mảngHãy thêm một nhận xét cho bài đăng này, bởi người dùng "DB người học":
Trả lại: 1Phương thức 2 cập nhật các trường của tài liệu dựa trên điều kiện được chỉ định. 3 là toán tử cập nhật mảng thêm phần tử vào một mảng. Nếu mảng không tồn tại, nó sẽ tạo một trường mảng và sau đó thêm phần tử.array update operator which adds an element to an array. If the array doesn't exist, it creates an array field and then adds the element.Hãy truy vấn bộ sưu tập và xác nhận nhận xét mới một cách trực quan, sử dụng phương thức 7:
Lưu ý trường 5 có các đối tượng bình luận là các yếu tố. Hãy thêm một bình luận nữa bằng cách sử dụng cùng một toán tử cập nhật 3. Nhận xét mới này (bởi 7 "Cơ sở dữ liệu Rebel") được thêm vào mảng 5:
4. Cập nhật phần tử mảngHãy cập nhật nhận xét được đăng bởi "Cơ sở dữ liệu Rebel" với trường 9 đã sửa đổi: 0. 0. 0Toán tử cập nhật 1 được sử dụng để thay đổi giá trị của trường. Toán tử $ định vị xác định một phần tử trong một mảng để cập nhật mà không chỉ định rõ ràng vị trí của phần tử trong mảng. Phần tử khớp đầu tiên được cập nhật. Đối tượng nhận xét được cập nhật:update
operator is used to change a field's value. The positional $ operator identifies an element in an array to update without explicitly specifying the position of the element in the array. The first matching element is updated. The updated comment object: 15. Xóa phần tử mảngNgười dùng đã thay đổi suy nghĩ của mình và muốn xóa bình luận, và sau đó thêm một bình luận mới. 2Toán tử cập nhật 2 loại bỏ các phần tử khỏi một mảng phù hợp với điều kiện được chỉ định - trong trường hợp này là 3.update
operator removes elements from an array which match the specified condition - in this case 3.Một nhận xét mới được thêm vào mảng sau khi hoạt động xóa ở trên, với văn bản sau: 4.6. Thêm một trường mới vào tất cả các đối tượng trong mảngHãy thêm một trường mới 5 cho tất cả các nhận xét trong mảng. 3Tất cả toán tử vị trí 6 chỉ định rằng toán tử cập nhật 1 sẽ sửa đổi tất cả các phần tử trong trường mảng được chỉ định. Sau khi cập nhật, tất cả các đối tượng bình luận đều có trường 5, ví dụ:all positional operator 6 specifies that the
update operator 1 should modify all elements in the specified array field. After the update, all comment objects have the 5 field, for example: 47. Cập nhật phần tử mảng cụ thể dựa trên điều kiệnTrước tiên, hãy thêm một nhận xét mới khác bằng toán tử cập nhật 3: 5Lưu ý trường 5 bị thiếu trong tài liệu đầu vào. Chúng tôi sẽ cập nhật nhận xét cụ thể này trong mảng 5 với điều kiện trường 5 bị thiếu. 6Trường 5 được cập nhật bằng toán tử cập nhật 4 (điều này tăng giá trị của trường hoặc nếu không tồn tại sẽ thêm trường và sau đó tăng). Toán tử vị trí được lọc 5 xác định các phần tử mảng phù hợp với các điều kiện 6 cho hoạt động cập nhật.update operator (this increments a field's value, or if not exists adds the field and then increments). The filtered positional operator 5 identifies the array elements that match the 6 conditions for an update operation.8. Kết luậnBài viết này cho thấy thực hiện các hoạt động CRUD cơ bản trên một loạt các đối tượng:
MongoDB cũng cho phép lập chỉ mục các phần tử mảng - trong trường hợp này, các trường của các đối tượng nhận xét của mảng 5. Ví dụ: nếu bạn đang truy vấn các bình luận của 8 và cần truy cập nhanh, bạn có thể tạo một chỉ mục cho trường đó. Các chỉ mục trên các trường mảng được gọi là các chỉ mục multikey. Các chỉ mục trường mảng có thể là một phần của các chỉ mục hợp chất.indexing the array elements - in this case, fields of the comment objects of the 5 array. For example, if you are querying on the comments by 8 and need fast access, you can create an index for that field. Indexes on array
fields are called as Multikey Indexes. Array field indexes can be part of Compound Indexes.Chúng tôi có thể thực hiện nhiều hoạt động khác trên các mảng - dự đoán, truy vấn và cập nhật - sử dụng các toán tử khác nhau cũng như đường ống tổng hợp. Ngoài ra, thực hiện các hoạt động này trên các mảng lồng nhau (mảng trong mảng). Chúng tôi sẽ thấy một số tính năng này trong một bài viết sau.operations on the arrays - projections, querying and updating - using various operators as well as the Aggregation Pipeline. Also, perform these operations on nested arrays (arrays within arrays). We will see some of these features in a later article. 8.1. Liên kết hữu ích
Chúng ta có thể lưu trữ các đối tượng trong MongoDB không?Các đối tượng lớn, hoặc "tệp", dễ dàng được lưu trữ trong MongoDB.Không có vấn đề gì để lưu trữ video 100MB trong cơ sở dữ liệu.. It is no problem to store 100MB videos in the database.
Làm cách nào để truy vấn một loạt các đối tượng trong MongoDB?Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử elemmatch $.Toán tử này cho phép chúng tôi tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.use $elemMatch operator. This operator allows us to search for more than one component from an array object.
Làm cách nào để đẩy một đối tượng mảng trong MongoDB?Trong MongoDB, toán tử Push $ được sử dụng để nối một giá trị được chỉ định vào một mảng.Nếu trường được đề cập không có trong tài liệu để cập nhật, toán tử Push $ thêm nó dưới dạng trường mới và bao gồm giá trị được đề cập làm yếu tố của nó.Nếu trường cập nhật không phải là trường loại mảng thì hoạt động không thành công.the $push operator is used to appends a specified value to an array. If the mentioned field is absent in the document to update, the $push operator add it as a new field and includes mentioned value as its element. If the updating field is not an array type field the operation failed.
MongoDB có bảo quản đơn đặt hàng mảng không?Yep MongoDB giữ thứ tự của mảng .. giống như động cơ javascript .... just like Javascript engines.. |