{
$cond: {
if: { $in: [`$$${field.fieldName}`, ['', null]] },
then: [],
else: `$$${field.fieldName}`,
},
},
在这种情况下,我还想检查字段。fieldName存在。$exists: true,
那么它将类似于if ( !filed.fieldName || field.fieldName === null || field.fieldName === '') then []
个
我没有找到任何方法来添加$exits: true
或false
在这。请帮助,如果可以添加一些东西到这。或任何替代的方式来实现?
4条答案
按热度按时间2nc8po8w1#
您可以使用$or
$ifNull
计算表达式,如果表达式的计算结果为非空值,则返回表达式的值。如果表达式的计算结果为空值,包括未定义值或缺少字段的示例,则返回替换表达式的值。
{ $ifNull: [ <expression>, <replacement-expression-if-null> ] }
xt0899hw2#
您只需要将
$ifNull
放入else部分,如果它不存在,它将返回[]
,Playground
输入:
结果:
第二种方法,如果你想在
if
部分添加一个已有的条件你可以尝试用$or
条件,$type
将返回字段的数据类型,缺少的字段类型为“missing”Playground
nszi6y053#
请记住,“field.fieldName exists”可能与“field.fieldName is not null"不同。
考虑如下特殊值:
因此,根据您的要求,条件可以是:
为了完整起见:使用
db.collection.find()
:ccrfmcuu4#
试试看: