Hướng dẫn mongodb join three collections - mongodb tham gia ba bộ sưu tập
Tôi đang sử dụng mã JS gần như pure để tham gia ba bộ sưu tập trong MongoDB và tôi tin rằng phải có một cách dễ dàng hơn để làm điều đó chỉ bằng cách sử dụng truy vấn Mongoose. Show
Đây là trường hợp của tôi; Tôi có một người bán có thể tạo và bán tài liệu. Tôi muốn người bán của tôi có thể xem các tài liệu mà anh ấy đã bán. Đây là lược đồ của tôi cho bộ sưu tập đơn hàng:
Và lược đồ của tôi cho tài liệu trông như thế này:
Như tôi đã nói trước đây, tôi muốn có được một danh sách các tài liệu thuộc về người bán đã đăng nhập được bán. (Một cái gì đó như thế này).
Mã tôi có được cho đến nay là cái dưới đây. Nó trông hơi xấu và nó chứa ba fors.
Có cách nào chỉ với Mongoose mà tôi có thể nhận được kết quả tương tự không? 5 không thể bao gồm giai đoạn 8 hoặc giai đoạn 9. Bắt đầu từ V6.0, 5 có thể chứa giai đoạn tìm kiếm Atlas ____101 làm giai đoạn đầu tiên bên trong đường ống. Để tìm hiểu thêm, xem hỗ trợ tìm kiếm Atlas. 5 không thể truy cập trực tiếp vào các trường tài liệu đã tham gia. Thay vào đó, hãy xác định các biến cho các trường tài liệu đã tham gia bằng cách sử dụng tùy chọn LET và sau đó tham chiếu các biến trong các giai đoạn 5.như
Những gì bạn có thể làm là kết hợp 0 và 1 trong một bộ sưu tập, như ví dụ được cung cấp dựa trên lược đồ DB quan hệ. Mongo là cơ sở dữ liệu NoQuery - và điều này đòi hỏi cách tiếp cận khác nhau để quản lý tài liệu.Vui lòng tìm truy vấn dưới 2 bước, kết hợp UserInfo với Userrole - tạo bộ sưu tập tạm thời mới được sử dụng trong truy vấn cuối cùng để hiển thị dữ liệu kết hợp. Trong truy vấn cuối cùng có một tùy chọn để sử dụng $ out và tạo bộ sưu tập mới với dữ liệu được hợp nhất để sử dụng sau.
Tạo bộ sưu tập "Tham gia" tất cả họ :-) Tôi có hai bộ sưu tập, 2 và 3.Tôi đang tìm kiếm một cái nhìn như: → MongoDB Manual Điều này về cơ bản giúp tôi có được tất cả các sản phẩm phù hợp với Category_id và bao gồm các thuộc tính phù hợp với cùng một danh mục_id.
0Đã thay đổi trong phiên bản 5.1. Thực hiện tham gia bên ngoài bên trái vào một bộ sưu tập trong cùng một cơ sở dữ liệu để lọc trong các tài liệu từ bộ sưu tập "được nối" để xử lý. Giai đoạn 0 thêm một trường mảng mới vào mỗi tài liệu đầu vào. Trường mảng mới chứa các tài liệu phù hợp từ bộ sưu tập "được tham gia". Giai đoạn 0 vượt qua các tài liệu được định hình lại này cho giai đoạn tiếp theo. 0 stage adds a new array field to each input document. The new array field contains the matching documents from the "joined" collection. The 0 stage passes these reshaped documents to the next stage.Bắt đầu từ MongoDB 5.1, 0 hoạt động trên các bộ sưu tập Sharded. 0 works across sharded collections.Để kết hợp các yếu tố từ hai bộ sưu tập khác nhau, hãy sử dụng giai đoạn đường ống 1.Giai đoạn 0 có các cú pháp sau: 0 stage has the
following syntaxes:Để thực hiện một sự phù hợp bình đẳng giữa một trường từ các tài liệu đầu vào với một trường từ các tài liệu của bộ sưu tập "đã tham gia", giai đoạn 0 có cú pháp này: 0 stage has this syntax:
0 lấy một tài liệu với các trường này: 0 takes a document with these fields:
Hoạt động sẽ tương ứng với câu lệnh Pseudo-SQL sau:
Xem các ví dụ sau:
Thực hiện nhiều lần tham gia và một trình điều khiển tương quan với 0
Thực hiện tham gia bên ngoài bên trái vào một bộ sưu tập trong cùng một cơ sở dữ liệu để lọc trong các tài liệu từ bộ sưu tập "được nối" để xử lý. Giai đoạn 0 thêm một trường mảng mới vào mỗi tài liệu đầu vào. Trường mảng mới chứa các tài liệu phù hợp từ bộ sưu tập "được tham gia". Giai đoạn 0 vượt qua các tài liệu được định hình lại này cho giai đoạn tiếp theo.pipeline in a 0 stage that references document fields from a joined collection. An uncorrelated subquery does not reference joined fields.Bắt đầu từ MongoDB 5.1, "data": [ { "orderId": "606b448dd2d9d643a811bc33", "documentId": "606b448dd2d9d643a811bc34", "title": "Document 1 u1", "price": 90, "createdAt": "2021-04-05T17:10:37.469Z" }, { "orderId": "606b43d2cd9b2740b8b8974b", "documentId": "606b43d2cd9b2740b8b8974c", "title": "Business Affiliate u7", "price": 222, "createdAt": "2021-04-05T17:07:30.859Z" }, { "orderId": "606b1a03ec048e0d44cb3bee", "documentId": "606b1a03ec048e0d44cb3bef", "title": "Business Affiliate u7", "price": 777, "createdAt": "2021-04-05T14:09:07.539Z" }, { "orderId": "606b1a03ec048e0d44cb3bee", "documentId": "606b1a03ec048e0d44cb3bf0", "title": "Doc 1 u1", "price": 1, "createdAt": "2021-04-05T14:09:07.539Z" }, ]0 hoạt động trên các bộ sưu tập Sharded.Để kết hợp các yếu tố từ hai bộ sưu tập khác nhau, hãy sử dụng giai đoạn đường ống 1. 0 pipeline stage containing a 4 stage, the 5 operator, or the 6 operator, the subquery is always run again if repeated.
Previously, depending on the subquery output size, either the subquery output was cached or the subquery was run again.Giai đoạn 0 có các cú pháp sau:Để thực hiện một sự phù hợp bình đẳng giữa một trường từ các tài liệu đầu vào với một trường từ các tài liệu của bộ sưu tập "đã tham gia", giai đoạn 0 có cú pháp này:concise correlated subqueries. 0 lấy một tài liệu với các trường này: 0 syntax:
Đồng ruộng
đường ống Chỉ định 5 để chạy trên bộ sưu tập đã tham gia. 5 xác định các tài liệu kết quả từ bộ sưu tập được tham gia. Để trả về tất cả các tài liệu, chỉ định một 5 6 trống. 5 không thể bao gồm giai đoạn 8 hoặc giai đoạn 9. Bắt đầu từ V6.0, 5 có thể chứa giai đoạn tìm kiếm Atlas ____101 làm giai đoạn đầu tiên bên trong đường ống. Để tìm hiểu thêm, xem hỗ trợ tìm kiếm Atlas.Atlas Search 01 stage as the first stage inside the pipeline. To learn more, see
Atlas Search Support. 5 không thể truy cập trực tiếp vào các trường tài liệu đã tham gia. Thay vào đó, hãy xác định các biến cho các trường tài liệu đã tham gia bằng cách sử dụng tùy chọn LET và sau đó tham chiếu các biến trong các giai đoạn 5.let option and then reference the variables in the 5 stages.Ghi chúĐể tham chiếu các biến trong các giai đoạn đường ống, hãy sử dụng cú pháp 6.pipeline stages, use the 6 syntax.Các biến LET có thể được truy cập bởi các giai đoạn trong đường ống, bao gồm các giai đoạn 0 bổ sung được lồng trong 5.let variables can be accessed by the stages in the pipeline, including additional 0 stages
nested in the 5.
đường ống Chỉ định 5 để chạy trên bộ sưu tập đã tham gia. 5 xác định các tài liệu kết quả từ bộ sưu tập được tham gia. Để trả về tất cả các tài liệu, chỉ định một 5 6 trống.
|