I have two collections that I want to join with $lookup based on two id fields. Both fields are from type guid and looke like this in mongodb compass: 'Binary('cavTZa/U2kqfHtf08sI+Fg==', 3)'
This syntax in the compass aggregation pipeline builder gives the expected result:
{ from: 'clients', localField: 'ClientId', foreignField: '_id', as: 'ClientData' } But i want to add some projection and tried to change it like this:
{ from: 'clients', 'let': { id: '$_id.clients' }, pipeline: [ { $match: { $expr: { $eq: [ '$ClientId', '$$id' ] } } }, { $project: { Name: 1, _id: 0 } } ], as: 'ClientData' } But the result here is that every client from collection 'clients' is added to every document in the starting table. I have to use MongoDB 3.6 so the new lookup syntax from >=5.0 is not available.
Any ideas for me? Does $eq work for binary stored guid data?