guy*_*guy 4 null mongoose mongodb
我有一个集合,其中包含名字和姓氏的字段,这些字段是可选的并且根本无法设置。
但是,我需要查询它们的串联以搜索全名,但如果未设置其中一个名称,则串联的返回值为 null。
如果未设置名称,有没有办法返回/连接默认值(空字符串)?
我想做类似的事情:
db.User.aggregate([
{
$project: { firstName: '$firstName' || '' },
$project: { lastName: '$lastName' || '' },
$project: { fullName: { $concat: ['$firstName', ' ', '$lastName'] } }
}
]);
Run Code Online (Sandbox Code Playgroud)
甚至:
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']
}
}
}
]);
Run Code Online (Sandbox Code Playgroud)
您可以使用$addFields将初始值替换为默认值。$ ifNull运算符允许您在没有值时返回空字符串。
db.collection.aggregate([
{
$addFields: {
firstname: { $ifNull: [ "$firstname", "" ] },
lastname: { $ifNull: [ "$lastname", "" ] },
}
},
{
$addFields: {
fullName: { $trim: { input: { $concat: [ "$firstname", " ", "$lastname" ] } } }
}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3084 次 |
| 最近记录: |