gpt4 book ai didi

java - 第一次使用 MongoTemplate 保存文档

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:15 25 4
gpt4 key购买 nike

我第一次使用 MongoTemplate 保存文档时遇到问题。我有很多记录同时到达服务器,这些记录具有相同的标识,因此我将第一个到达的记录保存在mongo中,所有其他记录将更新保存的文档。

示例:

record1(id=x) , record2(id=x),record3(id=x),record4(id=x),record5(id=x),record6(id=x),.....

我只需要保存 record1(id=x) ,以及所有其他内容来更新文档。

由于并发的原因,很多记录都是第一次保存的。在进行其他逻辑解决之前,是否有解决此问题的内置解决方案。

最佳答案

基本解决方案称为 "upsert" 。它是 MongoDB 上的内置函数 .update()方法并通过所有驱动程序执行。

就像 .update() 方法的任何调用一样,这需要两个基本参数,其中包括“查询”对象和“更新”对象。 “更新”对象使用 operators定义更新的行为。通用命令形式中有第三个选项,允许选项 "upsert"待设置。

考虑 shell 中的以下语句:

db.collection.update({ "_id": 1 },{ "$inc": { "counter": 1 } },{ "upsert" true })
db.collection.update({ "_id": 1 },{ "$inc": { "counter": 2 } },{ "upsert" true })
db.collection.update({ "_id": 1 },{ "$inc": { "counter": 3 } },{ "upsert" true })

这将在第一条语句上创建一个“计数器”值为1的新文档。后续语句将分别以 23 递增。无论语句执行的顺序如何,最后都只有一个文档的“计数器”值为6

在 Spring data MongoDB 中,mongoOperations 类实例有一个名为 .upsert() 的方法。它做同样的基本事情。

mongoOperations.upsert(query,update,Class.class)

关于java - 第一次使用 MongoTemplate 保存文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27790221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com