Node.js Nodejs在并发http请求时插入和更新数据库
我有一个http服务器(Nodejs)。当请求到来时,我获取数据并插入到db(mongdodb)(如果已经有了,我会更新它)。但问题是,当服务器收到并发请求时,mongodb将插入更多记录,而不是更新现有记录。有解决办法吗 处理此问题的一般方法是使用“upsert”。只要您有一个用户定义的ID(即,不是由驱动程序生成的),“upsert”将在文档不存在时插入文档,如果文档已经存在,则使用提供的ID更新文档 在以下示例中,第一行将插入文档,第二行(相同)将更新:Node.js Nodejs在并发http请求时插入和更新数据库,node.js,mongodb,Node.js,Mongodb,我有一个http服务器(Nodejs)。当请求到来时,我获取数据并插入到db(mongdodb)(如果已经有了,我会更新它)。但问题是,当服务器收到并发请求时,mongodb将插入更多记录,而不是更新现有记录。有解决办法吗 处理此问题的一般方法是使用“upsert”。只要您有一个用户定义的ID(即,不是由驱动程序生成的),“upsert”将在文档不存在时插入文档,如果文档已经存在,则使用提供的ID更新文档 在以下示例中,第一行将插入文档,第二行(相同)将更新: db.test.update(
db.test.update(
{ _id: "my-own-id" },
{ $set: { name: "D", surname: "R", time: "11:34:27.1222" } } ,
{ upsert: true }
);
第一轮,这将插入文件:
{
_id: "my-own-id",
name: "D",
surname: "R",
time: "11:34:27.1222"
}
现在,当它在一秒钟后再次运行时,文档已经存在,因此它只是得到更新:
db.test.update(
{ _id: "my-own-id" },
{ $set: { name: "D", surname: "R", time: "11:34:27.1223" } } ,
{ upsert: true }
);
现在,由于该文档已经存在,因此只需对其进行更新:
{
_id: "my-own-id",
name: "D",
surname: "R",
time: "11:34:27.1223"
}
我认为它看起来像是先插入然后更新。但当请求是并发的时,执行的速度是否足够快? 例子: 第一 { _id:“id” arr:[1] } 然后2个并发请求来更新arr { arr:[1,2]//将2追加到原始arr } { arr:[1,3]//追加3 }
是[1,2,3]还是[…]?因为请求是并发的,所以命令的更新速度是否足够快?能否显示用于执行“更新”和“插入”的代码。。。看起来你根本没有做任何更新。我想它看起来像是先插入再更新。但当请求是并发的时,执行的速度是否足够快?例子: