草庐IT

upserting

全部标签

来自 Grails 的 MongoDB 'upsert'

我正在尝试在Grails/GORM/mongodb插件/MongoDB中实现一个简单的“插入或更新”(所谓的“upsert”)方法。我在Hibernate中使用的方法(使用合并)因重复键错误而失败。我推测merge()可能不是mongodbGORM中受支持的操作,并尝试通过GMongo获取native更新插入方法。我终于有了一个可用的版本(如下所示),但这可能不是最好的方法,因为向要保存的对象添加任何字段都会悄无声息地破坏代码。publicvoidupsertPrefix(p){defo=newBasicDBObject()o.put("_id",p.id)o.put("someVal

node.js - 如何在 Mongodb 的 Upsert 上自动更新时间戳

如果我有一个带有键expires的Schema;每次更新文档时,如何让该键的值自动更新?这可能更复杂,但是,我正在upserting所以这个值需要在初始insert上设置,然后在每个upsert上更新>.因此,当文档被插入时:{expires:*anhourfromtheinsert*}当它是更新d时(通过upsert):{expires:*anhourfromtheupdate*}如果Mongoose内置了此功能,我正在使用它。如果Mongodb不支持它,Mongoose也不支持,我将只需要计算expires:并更新值,但它会很高兴在Mongodb中自动完成这项工作!事实上,它不会真

java - 在 java 中对具有特定 JSON 的嵌入式文档使用 $addToSet 和 upsert

我想在MongoDB中执行的查询如下db.idx.update({"keyword":"Somedynamickeyword"},{$addToSet:{url:"Somedynamicurl"}},{upsert:True})我需要这个MongoDB查询的java等价物,我已经尝试了很多,但我不断收到错误。我是Java和MongoDB的新手,但我很想学习,所以,请帮助我!另外,如果您可以向我解释此查询的JSON及其结构。提前一百万感谢:D(Y)编辑:-我尝试过的:-client=newMongoClient("localhost");db=client.getDB("idx");Ba

mongodb - 无法使用带有 upsert 的 updateone 批量更新 mongo

我遇到了一个问题。如果已经存在,我正在尝试更新,如果不存在,则插入。我正在使用spring-mongo驱动程序的批量API。DBCollectiondbCollection=mongoTemplate.getCollection("supcInfo");BulkWriteOperationbulkWriteOperation=dbCollection.initializeUnorderedBulkOperation();BulkUpdateRequestBuilderbuilder=bulkWriteOperation.find(newBasicDBObject("_id",supcI

javascript - Mongoose 的 findOneAndUpdate 和 upsert 中的重复键错误

当来self的csv文件的输入有两行或更多行具有相同的电子邮件地址时,我在使用findOneAndUpdate时遇到了一些问题。电子邮件地址在我的模型中设置为唯一,我认为findOneAndUpdate可以让我处理csv文件中的重复。代码如下。阅读here这是因为我的查询中的字段(在本例中为电子邮件)也是我想要创建的字段之一,以防找不到记录。我不确定这是不是真的。在任何情况下,电子邮件都是我的标识符,所以它必须在那里。进一步解释该行为:当csv文件包含在我运行脚本之前已存储在MongoDB中的电子邮件地址时,findOneAndUpdate完美运行但是,当我在csv文件中有两条记录共享

mongodb - 将更新与 upsert 和 $all 一起使用

我无法让它工作:db.library.update({categories:{$all:['/movie/action','/movie/comedy'],$nin:['/movie/cartoon']},location:{$geoWithin:{$centerSphere:[[48.8574946,2.3476296000000048],50/6378.1]}}},{$setOnInsert:{categories:['/movie/action','/movie/comedy'],location:{type:'Point',coordinates:[48.8574946,2.3

c# - 在 mongodb 中执行高效的 upsert

我有以下C#模型类:publicclassThingy{publicObjectIdId{get;set;}publicstringTitle{get;set;}publicDateTimeTimeCreated{get;set;}publicstringContent{get;set;}publicstringUUID{get;set;}}以及以下ASP.MVCController操作:publicActionResultCreate(Thingything){varquery=Query.EQ("UUID",thing.UUID);varupdate=Update.Set("Tit

python - pymongo DuplicateKeyError - 在 upsert 期间

我注意到pymongo库有一个奇怪的行为。当我从我的单元测试中运行以下代码时,一切正常(这2个文档存储在它们的集合中并且设置了_id)。property_db_item={#"_id":str(bson.ObjectId()),"url":item['url'],"price":item['price'],"rooms":item['rooms'],"area":item['area'],"flor":item['flor'],"street":item['street'],"city":item['city'],"region":item['region'],"country":it

node.js - 在不创建重复项的情况下使用阵列进行Upsert

我无法“插入”我的阵列。下面的代码在我的answers数组中创建了重复项,我绝对不希望这样做,并且现在看来$push无法正常工作。我尝试使用在SO上看到的不同方法已有一段时间了,但是没有一种方法适合我。使用此网络应用程序,用户可以在网站上查看问题并以"is"或“否”的response进行响应,并且他们可以随时更改(更新)其response,这意味着在数据库在不同的时间。如何解决这个问题?varQuestionSchema=Schema({title:String,admin:{type:String,ref:'User'},answers:[{type:Schema.Types.Mix

mongodb - Spark scala 使用 spark-mongo connector 进行 upsert

有什么方法可以根据数据框中的某个字段使用spark-mongo连接器更新MongoCollection吗? 最佳答案 要根据唯一键约束替换文档,请使用replaceDocument和shardKey选项。默认的shardKey是{_id:1}。https://docs.mongodb.com/spark-connector/master/configuration/df.write.format('com.mongodb.spark.sql')\.option('collection','target_collection')\.o