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

Lio*_*789 2 mongoose mongodb node.js

我有一个使用此代码的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});
                    }
            });
};
Run Code Online (Sandbox Code Playgroud)

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

小智 12

使用$ 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});
                    }
            });
};
Run Code Online (Sandbox Code Playgroud)