Bạn muốn $lookup
nhưng bạn muốn SQL giống như phép nối, tất cả các trường trong tài liệu gốc để thư mục gốc và thay thế được thêm vào để hợp nhất trong 1 tài liệu.
Truy vấn
db.user_relations.aggregate([
{
"$match": {
"$expr": {
"$eq": [
"$userId",
"userId1"
]
}
}
},
{
"$unwind": {
"path": "$friendsArray"
}
},
{
"$sort": {
"friendsArray.lastTimeStamp": 1
}
},
{
"$limit": 10
},
{
"$replaceRoot": {
"newRoot": "$friendsArray"
}
},
{
"$lookup": {
"from": "users",
"localField": "userId",
"foreignField": "_id",
"as": "joined__"
}
},
{
"$unwind": {
"path": "$joined__"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
"$joined__",
"$$ROOT"
]
}
}
},
{
"$project": {
"joined__": 0
}
}
])