猫鼬返回默认值而不是空值
Posted
技术标签:
【中文标题】猫鼬返回默认值而不是空值【英文标题】:mongoose return default value instead of null value 【发布时间】: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']
]);
【问题讨论】:
【参考方案1】:您可以使用$addFields 将初始值替换为默认值。 $ifNull 运算符允许您在没有值时返回一个空字符串。
db.collection.aggregate([
$addFields:
firstname: $ifNull: [ "$firstname", "" ] ,
lastname: $ifNull: [ "$lastname", "" ] ,
,
$addFields:
fullName: $trim: input: $concat: [ "$firstname", " ", "$lastname" ]
])
Mongo Playground
【讨论】:
以上是关于猫鼬返回默认值而不是空值的主要内容,如果未能解决你的问题,请参考以下文章
用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)