Этого можно достичь в двухэтапном запросе агрегации. Идея состоит в объединении $concat
полей имени и местоположения в качестве отдельных атрибутов фильтра на первом этапе с использованием $addFields
и затем выполните поиск, используя $match
и $regex
на следующем этапе.
Пример:
db.collection.aggregate([
{
$addFields: {
nameFilter: {
$concat: ["$name", " ", "$surname"],
},
locationFilter: {
$concat: ["$workplace", " ", "$location"],
},
},
},
{
$match: {
nameFilter: {
$regex: req.query.name,
$options: "i",
},
locationFilter: {
$regex: req.query.place,
$options: "i",
},
},
},
]);
пн go Пример игровой площадки