Edit: лучший способ справиться с этим, вероятно, обновить вашу модель документа. Вы можете изменить коллекцию клиентов на имя и имя.
В качестве альтернативы, вы можете использовать конвейер агрегации, как показано ниже:
[
{$match: {fullName:"aaaa bbb", order:478}},
{$lookup: {
from: 'products',
let: { productName: "$fullName"},
pipeline: [
{"$match": {
$expr: {
$and: [
{$eq: ["$firstNameProduct", {"$arrayElemAt": [{"$split": ["$$productName", " "]}, 0]} ]},
{$eq: ["$secondNameProduct", {"$arrayElemAt": [{"$split": ["$$productName", " "]}, 1]} ]}
]
}
}}],
as: 'matchingProduct'
}}
]
На этапе поиска выполняется поиск товаров, которые соответствуют firstNameProduct и secondNameProduct. В результате получается объект, который выглядит следующим образом:
_id:56d82612b63f1c31cf906003
name1:"aaaa"
name2:"bbb"
matchingProduct:Array
0:Object
secondNameProduct:"bbb"
_id:5684f3c454b1fd6926c324fd
firstNameProduct:"aaaa"
order:478
Вы можете добавить этап $ project для очистки данных, если вам нужно.
Этот конвейер предполагает, что будут только два продукта, и они будут перечислены в одном и том же порядке в обеих коллекциях.