如何在mongodb中推送一个新文件,但前提是它不存在?

时间:2013-07-19 18:07:49

标签: node.js mongodb mongoose

我正在完成使用此代码的POST:

exports.addContactPost = function(req, res, err) {
    User.findByIdAndUpdate(req.signedCookies.userid, {
                $push: {friendRequest: req.body.friendRequest}
            }, function(err) {
                if(err) {
                    console.log(err);
                    return console.log('error'); 
                } else {            
                    console.log('postsuccess');
                    res.json({response: true});
                    }
            });
};

如何获取$ push:代码行并声明如果id已经存在于不推送的friendRequest数组中。我试图使用$ exists:但我无法让它工作。

1 个答案:

答案 0 :(得分:11)

使用$addToSet运算符。如果不在数组中,它确保将添加该值。

基本上:

exports.addContactPost = function(req, res, err) {
    User.findByIdAndUpdate(req.signedCookies.userid, {
                $addToSet: {friendRequest: req.body.friendRequest}
            }, function(err) {
                if(err) {
                    console.log(err);
                    return console.log('error'); 
                } else {            
                    console.log('postsuccess');
                    res.json({response: true});
                    }
            });
};