У меня есть база данных mongodb, где у меня есть поля для имени и фамилии, которые являются необязательными и не могут быть установлены вообще.
однако мне нужно запросить их объединение для поиска полного имени, но если одно из имен не задано, возвращаемое значение конкатенации равно нулю.
есть ли способ вернуть / конкаталировать значение по умолчанию (пустую строку), если имя не задано?
Я не знаю, можно ли это сделать с помощью агрегатов $regex
и $text
, но я попытался сделать запрос с ними, и у меня появляется ошибка, что я не могу использовать их на своем уровне атласа .
Я хочу сделать что-то вроде:
db.User.aggregate([
{
$project: { firstName: '$firstName' || '' },
$project: { lastName: '$lastName' || '' },
$project: { fullName: { $concat: [$firstName, ' ', $lastName] } }
}
]);
или даже:
db.User.aggregate([
{
$project: {
firstNames: {
$cond: {
if: { $exists: [false] },
then: '',
else: '$firstName'
}
}
},
$project: {
lastNames: {
$cond: {
if: { $exists: [false] },
then: '',
else: '$lastName'
}
}
},
$project: {
fullName: {
$concat: ['$firstNames', ' ', '$lastNames']
}
}
}
]);