Bạn có thể thử tổng hợp bên dưới với mongodb 3.6 trở lên nhưng tôi nghĩ bạn nên sử dụng hai truy vấn vì đối với tập dữ liệu lớn $lookup
đường ống sẽ vi phạm giới hạn BSON
trong tổng số 16mb . Nhưng nó cũng phụ thuộc vào $match
của bạn điều kiện hoặc $limit
. Nếu chúng được áp dụng cho $lookup
thì quá trình tổng hợp của bạn sẽ hoạt động hoàn hảo.
db.OrderType1.aggregate([
{ "$limit": 1 },
{ "$facet": {
"collection1": [
{ "$limit": 1 },
{ "$lookup": {
"from": "OrderType1",
"pipeline": [{ "$match": { } }],
"as": "collection1"
}}
],
"collection2": [
{ "$limit": 1 },
{ "$lookup": {
"from": "OrderType2",
"pipeline": [{ "$match": { } }],
"as": "collection2"
}}
]
}},
{ "$project": {
"data": {
"$concatArrays": [
{ "$arrayElemAt": ["$collection1.collection1", 0] },
{ "$arrayElemAt": ["$collection2.collection2", 0] },
]
}
}},
{ "$unwind": "$data" },
{ "$replaceRoot": { "newRoot": "$data" } }
])