我想知道是否存在一个
$setIfNullOrEmpty
运算符。我目前使用的是这样一个upsert操作:const filter = {
id: 123
}
const updates = {
$set: {
varx: valx
},
$inc: { vary: valy },
$setOnInsert: z
};
const options = { upsert: true };
collection.updateOneWithOptions(filter, updates, options);
我希望还可以选择在数据库中的值为null或者空字符串时设置一些值,我的理想更新对象如下(是否有类似于此的功能?):
$set
:设置一个值。const updates = {
$set: {
varx: valx
},
$setIfNullOrEmpty: {
varxy: varxy
}
$inc: { vary: valy },
$setOnInsert: z
};
我知道可以通过2次查询(一次查询目标项目,检查该属性,另一次更新项目)来实现,但我正在寻找一种只需进行1次查询的方法。是否有此类方法?
$set
,它可以在字段为空或空字符串时工作。$inc
仅适用于整数,并且仅在该字段不存在时设置该字段。如果该字段为null或空字符串,则不会设置。 - Thomas