【发布时间】:2020-06-13 09:01:16
【问题描述】:
我有一个 mongodb 数据库,其中我的名字和姓氏字段是可选的,根本无法设置。
但是我需要查询它们的串联来搜索全名,但是如果没有设置其中一个名称,则串联的返回值为 null。
如果未设置名称,有没有办法返回/连接默认值(空字符串)?
我不知道是否可以通过使用聚合 $regex 和 $text 来完成,但我尝试使用它们进行查询,但我得到一个错误,我无法在我的 atlas 层中使用它们。
我想做类似的事情:
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']
}
}
}
]);
【问题讨论】:
标签: database mongodb mongoose nosql