Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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_Discord_Discord.js - Fatal编程技术网

Node.js 更新mongodb文档,如果该文档存在,则创建

Node.js 更新mongodb文档,如果该文档存在,则创建,node.js,mongodb,mongoose,discord,discord.js,Node.js,Mongodb,Mongoose,Discord,Discord.js,因此,我正试图为我和我的朋友制作一个discord机器人,用于跟踪CS GO 10 mans中的统计数据,我正在使用cheerio从提供统计数据的网站上进行Web垃圾处理,然后将它们传递到mongodb。报废功能工作正常,但我正试图找出如何避免为每个用户创建重复的文档。如果我输入*userid857575,它会提取该用户的统计数据,并放入数据库,但是如果我多次调用它,它会在数据库中生成多个文档。我的问题是,如果discord中的消息作者与db中的用户名匹配,如何让mongodb更新文档?因此,如

因此,我正试图为我和我的朋友制作一个discord机器人,用于跟踪CS GO 10 mans中的统计数据,我正在使用cheerio从提供统计数据的网站上进行Web垃圾处理,然后将它们传递到mongodb。报废功能工作正常,但我正试图找出如何避免为每个用户创建重复的文档。如果我输入*userid857575,它会提取该用户的统计数据,并放入数据库,但是如果我多次调用它,它会在数据库中生成多个文档。我的问题是,如果discord中的消息作者与db中的用户名匹配,如何让mongodb更新文档?因此,如果用户名bob发送*userid3939,并且数据库中已经存在bob,则更新文档。如果bob不存在,请创建文档。代码如下,感谢任何提示

    module.exports.run = async (bot, message, args) => {


    console.log(args);
    var userUrl = 'https://popflash.site/user/' +args;
    console.log(userUrl);
    console.log(message.member.user.tag);


     rp(userUrl)
         .then(function (html) {
             const arr = [];
             var i = 0;

             $('.stat-container', html).each(function (key, value) {
                 arr[i++] = $(this).find(".stat").text();

             });



             const stats = new Stats({
                 _id: mongoose.Types.ObjectId(),
                 userName: message.member.user.tag,
                 userId: args,
                 HLTV: arr[0],
                 ADR: arr[1],
                 HS: arr[2],
                 W: arr[3],
                 L: arr[4],
                 T: arr[5],
                 win_percent: arr[6]
             });



             stats.save()
                 .then(function (result) {                   
                    let botembed = new Discord.RichEmbed()
                        .setDescription(message.member.user + "'s 10 Man stats")
                        .setColor("#15f153")
                        .addField("stats", result)                        

                         return message.channel.send(botembed);


                 })

         })

}

module.exports.help = {
    name: "userid"
}

通过,您可以指定
upsert:true
选项以获得我认为您想要的行为。如果匹配,它将更新现有记录,否则它将创建一个新记录。

这看起来像什么?所需的功能是,如果用户名与discord用户名匹配,则整个文档都将更新