Javascript 将数据写入Mongodb或对其进行更新(如果是';它已经在数据库中了

Javascript 将数据写入Mongodb或对其进行更新(如果是';它已经在数据库中了,javascript,node.js,mongodb,discord.js,Javascript,Node.js,Mongodb,Discord.js,因此,我尝试使用Node.JS、Discord.JS和MongoDB创建一个级别系统,但我不知道如何在数据库中添加/更新数据 下面是我使用的代码,但它不起作用: if(db.collection(message.guild.id).findOne({user:message.author.id})){ db.collection(message.guild.id).updateOne( {user:message.author.id}, { $set:{lastmessage:Date.now(

因此,我尝试使用Node.JS、Discord.JS和MongoDB创建一个级别系统,但我不知道如何在数据库中添加/更新数据

下面是我使用的代码,但它不起作用:

if(db.collection(message.guild.id).findOne({user:message.author.id})){
db.collection(message.guild.id).updateOne(
{user:message.author.id},
{
$set:{lastmessage:Date.now()},
}
);
}否则{
db.collection(message.guild.id).insertOne({
用户:message.author.id,
lastmessage:Date.now(),
级别:0,
xp:0,
});
}

欢迎来到stackoverflow

首先,
db.collection(message.guild.id).findOne({user:message.author.id})
返回一个承诺,因此您必须使用
.then()
async/wait
方法或任何第三方承诺管理器(如果这是您的东西)来正确处理它

db.collection(message.guild.id).findOne({user: message.author.id}).then((result)=>{
    //Do stuff with result
})
但对于您的问题,您甚至不需要这样做:有一种方法可以将对象更新到MongoDB,或者在它不存在时插入它:使用
upsert:true
选项:


“不起作用”是什么意思?@SergioTulentsev,它只更新,但不插入。嗨,我发布了你问题的答案。请注意,您的问题可能会被否决,因为这似乎是一个易于搜索的问题,并且与其他问题类似:。
db.collection.updateOne(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>        // Available starting in MongoDB 4.2.1
   }
)
db.collection(message.guild.id).updateOne(
     {user: message.author.id},
     {$set: { lastmessage: Date.now()}},
     {upsert:true}
);