Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 需要使用mongodb中的条件更新字段_Node.js_Mongodb_Mongoose - Fatal编程技术网

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()

查看官方猫鼬了解更多详情

附言:你可能需要一些修改,因为我没有机会尝试代码。希望这有帮助:)