草庐IT

UpsertId

全部标签

mongodb - 在我可以使用 query.Count() 验证之前,Mongo 编写了 query.UpsertId 多个文档

描述:我在我的项目中使用mongoDB。当用户试图出售他的元素时,这是处理程序的简短逻辑。在向mongo提供报价之前,我验证了报价,因此不会有保存assetId的有效报价使用:mgo.v2蒙戈3.6golang1.10问题:如果用户点击速度非常快,会向我的处理程序发送多个请求(假设他快速双击鼠标),则验证不起作用,因为似乎第一个报价不在集合,因此我得到2-3个具有相同assetId的报价。我试过了设置mongoUrl?replicaSet=rs0,这样我们的主从现在就可以相互联系了验证后设置time.Sleep(200*time.Millisecond)问题:有什么办法可以用mongo

mongodb - Golang mongodb mgo 驱动 Upsert/UpsertId 文档

mongodbdocumentation说:如果参数仅包含更新运算符表达式,则和参数的字段和值。更新从参数中的等式子句创建一个基础文档,然后应用参数中的更新表达式。还有mgodocumentation说:Upsert查找与提供的选择器文档匹配的单个文档,并根据更新文档对其进行修改。如果没有找到与选择器匹配的文档,则将更新文档应用于选择器文档并将结果插入到集合中。但如果我做这样的更新:session.UpsertId(data.Code,data)我最终得到一个条目,它有一个由mongodb自动生成的ObjectID,而不是data.Code。这意味着UpsertId期望使用更新运算符格