Вы можете использовать агрегацию ниже с mongodb 3.6 и выше
db.user.aggregate([
{ "$lookup": {
"from": Room.collection.name,
"let": { "ref": { "$concat": ["$class", "$reference"] } },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$classReference", "$$ref"] } } }
],
"as": "ref"
}},
{ "$project": {
"classReference": { "$arrayElemAt": ["$ref.classReference", 0] },
"room": { "$arrayElemAt": ["$ref.room", 0] },
"name": 1,
"class": 1
"reference": 1
}}
])
В основном вам необходимо $concat
оба class
и reference
, а затем передать его в $lookup
конвейер.