Node.js 需要使用mongodb中的条件更新字段
我现在做的是Node.js 需要使用mongodb中的条件更新字段,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我现在做的是 if (part.qty) { part.status = 'In Stock'; } const part = new partsModel(part); return part.save(); 是否可以仅在MongoDB查询中执行此操作而不使用if语句insert和update您可以尝试以下操作: const filterObj = { "$or": [{ "qty": { "$exists
if (part.qty) {
part.status = 'In Stock';
}
const part = new partsModel(part);
return part.save();
是否可以仅在MongoDB查询中执行此操作而不使用if语句insert和update您可以尝试以下操作:
const filterObj = {
"$or": [{
"qty": {
"$exists": true
}
}, {
"qty": {
"$ne": null
}
}, {
"qty": {
"$ne": 0 //based on what type of value you have in qty
}
}]
};
const updateObj = {
"$set": {
"status": "In Stock"
}
};
partsModel.update(filterObj, updateObj)
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
});
这将使用我们的过滤器更新第一个匹配记录。如果要更新所有匹配的记录,请改用updateMany()
查看官方猫鼬了解更多详情
附言:你可能需要一些修改,因为我没有机会尝试代码。希望这有帮助:)您可以尝试以下方法:
const filterObj = {
"$or": [{
"qty": {
"$exists": true
}
}, {
"qty": {
"$ne": null
}
}, {
"qty": {
"$ne": 0 //based on what type of value you have in qty
}
}]
};
const updateObj = {
"$set": {
"status": "In Stock"
}
};
partsModel.update(filterObj, updateObj)
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
});
这将使用我们的过滤器更新第一个匹配记录。如果要更新所有匹配的记录,请改用updateMany()
查看官方猫鼬了解更多详情
附言:你可能需要一些修改,因为我没有机会尝试代码。希望这有帮助:)