Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual
Trên trang này
- Sự định nghĩa
- Cú pháp
- Phù hợp với bình đẳng với một điều kiện tham gia duy nhất
- Tham gia các điều kiện và các nhóm phụ trên một bộ sưu tập được tham gia
- Các nhóm phụ tương quan bằng cách sử dụng cú pháp ngắn gọn
- Hành vi
- Quan điểm và đối chiếu
- Những hạn chế
- Hỗ trợ tìm kiếm Atlas
- Bộ sưu tập Sharded
- Công cụ thực hiện truy vấn dựa trên khe
- Ví dụ
- Thực hiện một sự bình đẳng duy nhất với
$lookup
- Sử dụng
$lookup
với một mảng - Sử dụng
$lookup
với$mergeObjects
- Thực hiện nhiều lần tham gia và trình điều khiển tương quan với
$lookup
- Thực hiện một trình điều khiển không tương thích với
$lookup
- Thực hiện trình độ con tương quan ngắn gọn với
$lookup
$lookup
Changed trong phiên bản 5.1.Changed in version 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 $lookup
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 $lookup
chuyển các tài liệu được định hình lại này cho giai đoạn tiếp theo.$lookup
stage adds a new array field to each input document. The new array field contains the matching documents from the "joined" collection. The $lookup
stage passes these reshaped documents to the
next stage.
Bắt đầu từ MongoDB 5.1, $lookup
hoạt động trên các bộ sưu tập Sharded.$lookup
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
SELECT *, FROM collection WHERE IN [ SELECT * FROM WHERE = ];
4.Giai đoạn $lookup
có các cú pháp sau:$lookup
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 $lookup
có cú pháp này:$lookup
stage has this syntax:
{ $lookup: { from: , localField: , foreignField: , as: } }
$lookup
lấy một tài liệu với các trường này:$lookup
takes a document with these fields:
từ | Chỉ định bộ sưu tập trong cùng một cơ sở dữ liệu để thực hiện tham gia với. 8 là tùy chọn, bạn có thể sử dụng giai đoạn 9 trong giai đoạn $lookup thay thế. Ví dụ, xem Sử dụng giai đoạn 9 trong giai đoạn $lookup .$lookup stage instead. For an example, see Use a 9 Stage in a $lookup Stage.Bắt đầu từ MongoDB 5.1, bộ sưu tập được chỉ định trong tham số 8 có thể được chia cắt.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
địa phương | Chỉ định trường từ đầu vào tài liệu đến giai đoạn 6 với 7 từ các tài liệu của bộ sưu tập 8. Nếu một tài liệu đầu vào không chứa 6, $lookup coi trường là có giá trị $lookup 1 cho các mục đích phù hợp.$lookup stage. $lookup performs an equality match on the 6 to the 7 from the documents of the 8 collection.
If an input document does not contain the 6, the $lookup treats the field as having a value of $lookup 1 for matching purposes.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
vùng ngoại quốc | Chỉ định trường từ các tài liệu trong bộ sưu tập 8. $lookup thực hiện phù hợp bình đẳng trên 7 với 6 từ các tài liệu đầu vào. Nếu một tài liệu trong bộ sưu tập 8 không chứa 7, $lookup coi giá trị là $lookup 1 cho các mục đích phù hợp.$lookup performs an equality match on the 7 to the 6 from the input documents. If a document in the 8 collection does not contain the 7, the
$lookup treats the value as $lookup 1 for matching purposes.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
như | Chỉ định tên của trường mảng mới để thêm vào các 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 8. Nếu tên được chỉ định đã tồn tại trong tài liệu đầu vào, trường hiện tại sẽ được ghi đè.
|
Hoạt động sẽ tương ứng với câu lệnh Pseudo-SQL sau:
SELECT *, FROM collection WHERE IN [ SELECT * FROM WHERE = ];
Xem các ví dụ sau:
Thực hiện một sự bình đẳng duy nhất với
$lookup
Sử dụng
$lookup
với một mảngSử dụng
$lookup
với$mergeObjects
Thực hiện nhiều lần tham gia và trình điều khiển tương quan với $lookup
Thực hiện một trình điều khiển không tương thích với
$lookup
Thực hiện trình độ con tương quan ngắn gọn với
$lookup
$lookup
Changed 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 $lookup
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 $lookup
chuyển các tài liệu được định hình lại này cho giai đoạn tiếp theo.pipeline in a $lookup
stage that references document fields from a joined
collection. An uncorrelated subquery does not reference joined fields.
Bắt đầu từ MongoDB 5.1, $lookup
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
SELECT *, FROM collection WHERE IN [ SELECT * FROM WHERE = ];
4.$lookup
pipeline stage containing a
$lookup
7 stage, the $lookup
8 operator, or the $lookup
9 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 $lookup
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 $lookup
có cú pháp này:concise correlated subqueries.
$lookup
lấy một tài liệu với các trường này:$lookup
syntax:
{ $lookup: { from: , let: { : , …, : }, pipeline: [ ], as: } }
Đồng ruộng$lookup
stage accepts a document with these fields:
từ | Chỉ định bộ sưu tập trong cùng một cơ sở dữ liệu để thực hiện tham gia với. 8 là tùy chọn, bạn có thể sử dụng giai đoạn 9 trong giai đoạn $lookup thay thế. Ví dụ, xem Sử dụng giai đoạn 9 trong giai đoạn $lookup .$lookup stage instead. For an example,
see Use a 9 Stage in a $lookup Stage.Bắt đầu từ MongoDB 5.1, bộ sưu tập được chỉ định trong tham số 8 có thể được chia cắt.
| |||||||||||||||||||||||||||||||||||
let | địa phươngpipeline stages. Use the variable expressions to access the fields from the joined collection's documents that are input to the Bắt đầu từ MongoDB 5.1, |
SELECT *, |
FROM collection |
WHERE IN [ |
SELECT * |
FROM |
WHERE = |
]; |
$lookup
9 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 $lookup
bổ sung được lồng trong $lookup
8.let variables can be accessed by the stages in the
pipeline, including additional $lookup
stages nested in the $lookup
8.
Giai đoạn
$mergeObjects
2 yêu cầu sử dụng toán tử$mergeObjects
3 để truy cập các biến. Toán tử$mergeObjects
3 cho phép sử dụng các biểu thức tổng hợp bên trong cú pháp$mergeObjects
2.Bắt đầu từ MongoDB 5.0,
$mergeObjects
6,$mergeObjects
7,$mergeObjects
8,$mergeObjects
9 và$lookup
0 Các toán tử so sánh được đặt trong toán tử$mergeObjects
3 có thể sử dụng chỉ số trên bộ sưu tập
8 được tham chiếu trong giai đoạnSELECT *, FROM collection WHERE IN [ SELECT * FROM WHERE = ]; $lookup
. Hạn chế:$lookup
stage. Limitations:Các chỉ mục đa năng không được sử dụng.
Các chỉ mục không được sử dụng để so sánh trong đó toán hạng là một mảng hoặc loại toán hạng không được xác định.
Các chỉ mục không được sử dụng để so sánh với nhiều hơn một toán hạng đường dẫn trường.
Các giai đoạn khác [không phải là 62] trong đường ống không yêu cầu toán tử
$mergeObjects
3 để truy cập các biến.pipeline do not require an$mergeObjects
3 operator to access the variables.
đường ống
Chỉ định $lookup
8 để chạy trên bộ sưu tập đã tham gia. $lookup
8 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ức trống $lookup
8 $lookup
9.
$lookup
8 không thể bao gồm giai đoạn $lookup
1 hoặc giai đoạn $lookup
2. Bắt đầu từ V6.0, $lookup
8 có thể chứa giai đoạn tìm kiếm Atlas ____84 như giai đoạn đầu tiên trong đường ống. Để tìm hiểu thêm, xem hỗ trợ tìm kiếm Atlas.Atlas Search $lookup
4
stage as the first stage inside the pipeline. To learn more, see Atlas Search Support.
$lookup
8 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 $lookup
8.let option and then reference the variables in the $lookup
8 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 $lookup
9.pipeline stages, use the $lookup
9 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 $lookup
bổ sung được lồng trong $lookup
8.let variables can be accessed by the stages in the pipeline, including additional
$lookup
stages nested in the $lookup
8.
Giai đoạn
$mergeObjects
2 yêu cầu sử dụng toán tử$mergeObjects
3 để truy cập các biến. Toán tử$mergeObjects
3 cho phép sử dụng các biểu thức tổng hợp bên trong cú pháp$mergeObjects
2.Bắt đầu từ MongoDB 5.0,
$mergeObjects
6,$mergeObjects
7,$mergeObjects
8,$mergeObjects
9 và$lookup
0 Các toán tử so sánh được đặt trong toán tử$mergeObjects
3 có thể sử dụng chỉ số trên bộ sưu tập
8 được tham chiếu trong giai đoạnSELECT *, FROM collection WHERE IN [ SELECT * FROM WHERE = ]; $lookup
. Hạn chế:$lookup
stage. Limitations:Các chỉ mục đa năng không được sử dụng.
Các chỉ mục không được sử dụng để so sánh trong đó toán hạng là một mảng hoặc loại toán hạng không được xác định.
Các chỉ mục không được sử dụng để so sánh với nhiều hơn một toán hạng đường dẫn trường.
Các giai đoạn khác [không phải là 62] trong đường ống không yêu cầu toán tử
$mergeObjects
3 để truy cập các biến.pipeline do not require an$mergeObjects
3 operator to access the variables.
đường ống
Chỉ định $lookup
8 để chạy trên bộ sưu tập đã tham gia. $lookup
8 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ức trống $lookup
8 $lookup
9.