Không có toán tử vị trí cho $ lookup nhưng bạn có thể sử dụng pipeline
tùy chỉnh trong MongoDB 3.6 để xác định tham gia tùy chỉnh điều kiện
:
db.history.aggregate([
{
$lookup: {
from: "childsgroup",
let: { child_id: "$child_id" },
pipeline: [
{ $match: { $expr: { $in: [ "$$child_id", "$childs.id" ] } } },
{ $unwind: "$childs" },
{ $match: { $expr: { $eq: [ "$childs.id", "$$child_id" ] } } },
{ $replaceRoot: { newRoot: "$childs" } }
],
as: "childInfo"
}
}
])
$match
được thêm vào để cải thiện hiệu suất:chúng tôi chỉ muốn tìm những tài liệu đó từ childsgroup
chứa child_id
phù hợp và sau đó chúng tôi có thể so khớp các tài liệu phụ sau $unwind
sân khấu.