IDocumentClient.UpsertDocumentAsync没有更新,而是插入了重复的ids
我在C#中有一个VS2017解决方案,我正在使用 iDocumentClient.upSertDocumentAsync 将某些文档提升到我的CosMoSDB DocumentDB Collection中.但是我注意到它实际上是在创建具有相同ID的新文档,而该集合中已经有一个具有该ID的文档. 现在,在使用相同ID的新文档上升后,查询结果看起来像这样: select * from c where c.id = "aaaa-bbbb-cccc" [ { "id": "aaaa-bbbb-cccc", "firstname": "john", "lastname": "doe" }, { "id": "aaaa-bbbb-cccc", "firstname": "john", "lastname": "doe", "age": "35"
14 2024-04-19
编程技术问答社区
实体框架-UPSERT的唯一索引
我搜索了一些问题,但找不到真正有帮助的东西. 所以我的问题/难题如此: 我知道MySQL数据库具有独特的索引系统,可使用此格式在同一查询中插入/更新: insert into t(a,b,c) values(1,1,1) on duplicate keys update b=values(b),c=values(c); 和用于用该索引替换现有记录的替换格式. 说实话,我在MSSQL中看到的唯一类似的内容是merge,但我真的不喜欢它,并且验证查询以插入或更新不是基于唯一的索引.../p> 那么,如何将MySQL独特的UPSER模拟到实体框架中?这是我的主要问题... 我的意思是不要从实体集中获取记录并检查是否为null是否为可能的插入或更新; ; 我可以得到吗?或不?任何提示都可以有用 我看到 'T出现在版本6 ... 中 实体的示例: [Table("boats")] public class Boat {
10 2024-04-17
编程技术问答社区
实体框架|唯一索引上的UPSERT
我搜索了一些问题,但找不到真正有帮助的东西. 所以我的问题/难题如此: 我知道MySQL数据库具有独特的索引系统,可使用此格式在同一查询中插入/更新: insert into t(a,b,c) values(1,1,1) on duplicate keys update b=values(b),c=values(c); 和用于用该索引替换现有记录的替换格式. 说实话,我在MSSQL中看到的唯一类似的内容是merge,但我真的不喜欢它,并且验证查询以插入或更新不是基于唯一的索引.../p> 那么,如何将MySQL独特的UPSER模拟到实体框架中?这是我的主要问题... 我的意思是不要从实体集中获取记录并检查是否为null是否为可能的插入或更新; ; 我可以得到吗?或不?任何提示都可以有用 我看到 'T出现在版本6 ... 中 实体的示例: [Table("boats")] public class Boat {
22 2024-04-17
编程技术问答社区
AddOrUpdate的工作方式与预期的不一样,产生了重复的内容。
我正在使用基于Code-First dbContext的EF5设置. in DbMigrationsConfiguration.Seed我正在尝试用默认虚拟数据填充DB.为了完成此任务,我使用DbSet.AddOrUpdate方法. 最简单的代码来说明我的目标: j = 0; var cities = new[] { "Berlin", "Vienna", "London", "Bristol", "Rome", "Stockholm", "Oslo", "Helsinki", "Amsterdam", "Dublin" }; var cityObjects = new City[cities.Length]; foreach (string c in cities) { int i
10 2024-04-14
编程技术问答社区
在sql server精简版上执行插入或更新(upsert)。
我有C#项目,它使用SQLServer Compact Edition和实体框架进行数据访问.我需要插入或更新大量的行,5000+或更多的DB,因此,如果键的存在,请更新记录,如果不插入记录.我找不到使用紧凑型版本和EF的方法来完成此操作的方法,即在核心i7计算机上花2分钟以上的性能.我已经尝试搜索记录以查看是否存在,然后插入(如果不是这样)或更新,则搜索是杀手.我尝试编译搜索查询,这仅给出了很小的改进.我尝试的另一件事是将记录插入尝试捕获量,如果它失败了更新,但这迫使我在每个记录上都能保存每个记录以获取例外,而不是在末尾进行性能杀手.显然,我无法使用存储过程,因为它是紧凑的版本.另外,我只是在DB上直接考虑直接执行T-SQL,但是缺乏紧凑的过程语句似乎排除了这一点. 我已经在整个想法中搜索了世界.我真的想使用紧凑型,如果我可以过度表达部署福利和防止用户在DB周围挖掘的能力.任何建议都将不胜感激. 谢谢 解决方案 也许您可以使用简单的查询获得您寻求的结果. 假设您要插入或更
4 2024-04-14
编程技术问答社区
UPSERT到具有动态表名的表中
提供的任何更好的方法可以在表中升级到表格: 〜1行/秒的数据上升 表名称是动态的,使用传递给它的ObjectID参数生成 以下步骤投掷: " ORA-00942:不存在表或视图" CREATE OR REPLACE PROCEDURE PROCEDURE "SPINSERTDATA" ( pObjectID IN RAW, pDateTime IN TIMESTAMP, pValue IN BINARY_DOUBLE, ) AS BEGIN Declare vQueryInsert VARCHAR2(1000); vQueryUpdate VARCHAR2(1000); vTableName VARCHAR2(30); Begin vTableName := FGETTABLENAME(POBJECTID => pObjectID); vQueryUpdate := 'UPDATE '
12 2024-04-13
编程技术问答社区
我如何在SQL Server中进行批量上载?
我正在使用MERGE语句来upsert行,在SQL Server 2008数据库中.但是,我的Sproc是一个单行的操作,而实际上我更喜欢批处理这些.这是甚至可能的,如果是这样,我该怎么办? 解决方案 您可以在PROC中使用表值参数吗?在这里看看 -SQL-2008.html#TVP_IN_TSQL 获得一些想法 然后,在Proc中,您可以使用合并对TVP 其他解决方案 我创建了一个名为" UPSERT"的PROC,该Proc采用源表名称,目标表名称,要加入的字段以及要更新的字段(字段由逗号分隔),然后进行动态合并. 代码在下面. CREATE proc [common].[upsert](@source nvarchar(100), @target nvarchar(100), @join_field nvarchar(100), @fields nvarchar(200)) as --@source is the table
10 2024-03-29
编程技术问答社区
MongoDB中的批量更新/上传?
是否可以在mongodb中进行批量更新/UPSERT(不是插入)? 如果是,请指出与此相关的任何文档? 谢谢 解决方案 您可以使用命令行程序 mongoimport 它应该在您的mongodb bin dir ... 中 您需要考虑使用两个选项 UpSert ... - upsert插入或 更新已经存在的对象 - 上方的arg comma comma分隔字段用于查询 的一部分 UPSERT.您应该确保这是索引 更多信息在这里:或只是做... $ mongoimport --help 其他解决方案 mongo可以执行.js文件. 您可以在JS文件中按所有更新命令. t.js db.record.update({md5:"a35f10a8339ab678612d1f86be08b81a"},{$set:{algres:[]}},false,true); db.record.update({md5:"a35f10a8339ab678
14 2024-03-29
编程技术问答社区
在Azure表存储中添加或替换实体
我正在使用Windows Azure表存储,并且有一个简单的要求:添加新行,用PartitionKey/Rowkey覆盖任何现有的行.但是,保存更改总是会引发异常,即使我传递了替换器选项: tableServiceContext.AddObject(TableName, entity); tableServiceContext.SaveChangesWithRetries(SaveChangesOptions.ReplaceOnUpdate); 如果实体已经存在,则抛出了: System.Data.Services.Client.DataServiceRequestException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException:
16 2024-03-26
编程技术问答社区
将Oracle upsert转换为AzureSQL(T-SQL)准备语句
我想将UPSERT查询从Oracle DB迁移到Azuresql.下面显示了一个甲骨文准备的语句,该语句从dummy表上获取dumper的值,并在虚拟表上进行upsert操作. MERGE INTO DUMMY a USING (SELECT ? ID, ? NAME, ? SIZE from dual) b ON (a.ID = b.ID) WHEN MATCHED THEN UPDATE SET a.ID = b.ID, a.NAME = b.NAME, a.SIZE = b.SIZE WHEN NOT MATCHED THEN INSERT(a.ID, a.NAME, a.SIZE) VALUES ( b.ID, b.NAME, b.SIZE) 我还要求早些时
8 2024-03-26
编程技术问答社区
Azure函数插入但不更新cosmosDB
我有一个Azure功能从Azure Service Bus队列接收消息,并将文档发送到CosmosDB.我正在使用Azure函数1.x: public static class Function1 { [FunctionName("Function1")] public static void Run([ServiceBusTrigger("ServiceBusQueue", AccessRights.Manage, Connection = "ServiceBusQueueConnection")]BrokeredMessage current, [DocumentDB( databaseName: "DBname", collectionName: "Colname", ConnectionStringSetting = "CosmosDBConnection")]out dynamic d
22 2024-03-25
编程技术问答社区
如何使用Azure DocumentDB执行UPSERT?
Azure DocumentDB不支持UPSERT.是否有合理的工作以实现相同的功能? 正在使用存储过程,该过程检查是否存在文档以确定是否应执行有效的策略? 如果我需要批量执行数千个? 在此处投票支持该功能: http://feedback.azure.com/论坛/263030-documentDB/建议/7075256-促销 Update - 这是我尝试批量存储过程的尝试. function bulkImport(docs) { var collection = getContext().getCollection(); var collectionLink = collection.getSelfLink(); var count = 0; if (!docs) throw new Error('Docs parameter is null'); var docsLength = docs.l
18 2024-03-25
编程技术问答社区
Postgres中的serial正在增加,即使我在冲突中添加了什么也不做。
我正在使用Postgres 9.5,在这里看到一些有线的东西. 我一直在运行5分钟的cron作业,以触发SQL语句,该语句正在添加记录列表(如果不存在). INSERT INTO sometable (customer, balance) VALUES (:customer, :balance) ON CONFLICT (customer) DO NOTHING will.customer是主要键(文本) 某些结构是: id:串行 客户:文字 余额:bigint 现在似乎每次此作业都运行时,ID字段都会默默增加+1.因此,下次我真的添加了一个字段,它比我的最后一个值高出数千个数字.我认为此查询检查是否需要冲突,如果是这样,则什么也不做,但是目前似乎试图插入记录,增加ID然后停止. . 有什么建议? 解决方案 这对您来说很奇怪的是,您正在考虑柜台上的增量作为插入操作的一部分,因此"无所作为"应该表示"不要递增任何东西".您正
14 2024-03-20
编程技术问答社区
SQL Server 2005中的原子式UPSERT
在SQL Server 2005中进行原子" UPSERT"的正确模式是什么? 我在这样看到很多代码(例如,请参见检查是否检查存在一行,否则插入),具有以下两部分模式: UPDATE ... FROM ... WHERE -- race condition risk here IF @@ROWCOUNT = 0 INSERT ... 或 IF (SELECT COUNT(*) FROM ... WHERE ) = 0 -- race condition risk here INSERT ... ELSE UPDATE ... 其中 将是对天然密钥的评估.上述方法似乎都没有很好地涉及并发.如果我不能有两排具有相同的天然钥匙,那么在种族条件方案中,所有上述风险都用相同的天然钥匙插入行. 我一直在使用以下方法,但是我很惊讶地没有在人们的回答中看到它,所以我想知道它有什么问题: INSERT
18 2024-03-18
编程技术问答社区
Mongodb:同时上载多个文件(键值如$in)。
我偶然发现了MongoDB的有趣行为: 我运行时: db.getCollection("words").update({ word: { $in: ["nico11"] } }, { $inc: { nbHits: 1 } }, { multi: 1, upsert: 1 }) 如果不存在,它将创建" NICO11",并将NBHIT提高1(如预期). 但是,当我运行时: db.getCollection("words").update({ word: { $in: ["nico10", "nico11", "nico12"] } }, { $inc: { nbHits: 1 } }, { multi: 1, upsert: 1 }) 它将正确更新DB中已经存在的键,但不插入缺失的键. 是预期的行为,有什么方法可以向MongoDB提供一个数组,以更新现有元素并创建需要创建的元素? 解决方案 根据 该更新从相等性子句中创建一个基本文档 参数,
8 2024-03-06
编程技术问答社区
如果条目不包含两个匹配的字段,mongo将其添加到嵌套数组。
我有一个蒙戈文档,其中包含一个名为"历史记录: "的数组 { "_id" : ObjectId("575fe85bfe98c1fba0a6e535"), "email" : "email@address", "__v" : 0, "history" : [ { "name" : "Test123", "organisation" : "Rat", "field" : 4, "another": 3 } ] } 我想在每个历史记录对象或更新字段中添加字段和组织,并在必要时将其他字段添加到对象. so: 此查询,找到匹配的查询: db.users.find({ email:"email@address", $and: [ { "history.name": "Tes
10 2024-03-05
编程技术问答社区
在MongoDB文档中上移匹配标准的阵列元素?
按照我如何更新数组元素匹配MongoDB文档中的标准? 我想提高数组元素,因此,如果不匹配,则插入它,否则将其更新. 我在该问题上尝试了答案,如果数组元素已经存在,则可以正常工作.如果该元素不存在,则在数组字段下创建一个" $"的孩子. 我的mongo结构如下: Widget (collection) --Name --Properties (array) --Name --Value 我的应用程序获得了一个小部件名称和Web服务调用中的属性列表.我希望迭代提供的属性,并在名称已经存在的情况下更新MongoDB中的值,或者如果没有,则将新属性插入到属性数组中. 解决方案 使用单个更新,如果没有某些应用侧逻辑,则无法使用.请注意,UPSERT作为功能与此特定问题无关,除非您要自动创建新的小部件文档,如果提供的名称不存在. 您遇到的问题是,没有功能可以使您可以根据数组元素的存在进行两个不同的更新.您唯一的两个选择是: 找到该项目,确定相
12 2024-03-04
编程技术问答社区
pyspark:使用另一个数据框插入或更新数据框
我有两个DataFrames DF1和DF2. DF1是主人,DF2是三角洲.来自DF2的数据应插入DF1或用于更新DF1数据. 可以说df1的格式: id_no start_date 金额 天 1 2016-01-01 4650 22 2 2016-01-02 3130 45 1 2016-01-03 4456 22 2 2016-01-15 1234 45 df2包含以下内容: id_no start_date 金额 天 1 2016-01-01 8650 52 2 2016-01-02 7130 65 1 2016-01-06 3456 20 2 2016-01-20 2345 19 3 2016-02-02 1345 19 我需要组合两个数据框架,以便如果DF2的" ID_NO"和"开始日期"与DF1匹配,则应在DF1中替换,如果不匹配,则应将其插入DF1. " id_no"不是唯一的. 预期结果: id_no star
12 2024-03-01
编程技术问答社区
使用PySpark DataFrames和JDBC对MySql表进行INSERT & UPDATE
我正在尝试使用PySpark SQL DataFrames和JDBC Connection插入和更新MySQL的一些数据. 我成功地使用SaveMode.Append插入了新数据.是否可以从Pyspark SQL? 中更新现有数据并在MySQL表中插入新数据 我要插入的代码是: myDataFrame.write.mode(SaveMode.Append).jdbc(JDBCurl,mySqlTable,connectionProperties) 如果我更改为savemode.overwrite,它将删除完整表并创建一个新表,我正在寻找MySQL中可用的"重复密钥更新"之类的东西. 对此的任何帮助将受到高度赞赏. 解决方案 在Mysql中创建视图为create view as select ... 在使用 - 插入后,在mySQL中创建触发器以进行更新 CREATE TRIGGER trigger_na
22 2024-02-29
编程技术问答社区
在红移中上移
我有一个DW表,我正在其中插入登台表中的数据. DW表包含5列,我从本质上检查了从登台表中挑选的DW表中所有5列的组合,如果存在,则我不做插入(或更新)并跳过该行(如已经存在). 另一方面 是否有一种方法来实现这一目标.因为我在这里没有进行任何更新操作(仅插入并删除(忽略插入)).我不确定Upsert是否是正确的选择. 解决方案 没有UPSERT UPSERT在Redshift中,请参阅他们的文档.如果您打算仅将行加载到尚未包含的表中,那么这应该可以解决: insert into target_table select * from source_table left join target_table using(col1, col2, col3, col4, col5) where target_table.col1 is null ;
44 2024-01-26
编程技术问答社区