草庐IT

mongodb - Upsert Document和/或添加子文档

我一直在努力解决mongodb、mongoose和javascript的异步特性,以及如何最好地对一个集合进行多次更新。我有一张客户和联系资料的excel表格。有些客户机有多个联系人,每行一个,而且客户机数据是相同的(因此客户机名称可以用作唯一的键-实际上在用unique:true定义的模式中)。我想达到的逻辑是:在客户端集合中搜索以clientName为键的客户端如果找不到匹配的clientname,则为该客户机创建一个新文档(不是upsert,如果客户机文档已经在数据库中,则我不想更改任何内容)使用firstName和lastName键检查联系人是否已存在于客户端文档中的联系人数组

mysql - SQL 标准 UPSERT 调用

我正在寻找标准的SQL“UPSERT”语句。如果存在,则插入和更新一个调用。我正在寻找一个工作、高效和跨平台的调用。我见过MERGE、UPSERT、REPLACE、INSERT..ONDUPLICATEUPDATE但没有声明满足需求。顺便说一句,我使用MYSQL和HSQLDB进行单元测试。我知道HSQLDB是有限的,可能无法满足我的需要,但即使没有它我也找不到标准方法。声明目前只有MYSQL和HSQLDB也足够了。我已经四处寻找了一段时间,没有得到答案。我的table:CREATETABLEMY_TABLE(MY_KEYvarchar(50)NOTNULL,MY_VALUEvarcha

Android 房间持久化库 : Upsert

Android的Room持久性库优雅地包含了适用于对象或集合的@Insert和@Update注释。但是,我有一个需要UPSERT的用例(包含模型的推送通知),因为数据库中可能存在也可能不存在数据。Sqlite本身没有upsert,解决方法在此SOquestion中进行了描述。.鉴于那里的解决方案,如何将它们应用于Room?更具体地说,如何在Room中实现不会破坏任何外键约束的插入或更新?使用带有onConflict=REPLACE的insert将导致调用该行的任何外键的onDelete。在我的情况下,onDelete会导致级联,重新插入一行将导致其他表中具有外键的行被删除。这不是预期的

Android 房间持久化库 : Upsert

Android的Room持久性库优雅地包含了适用于对象或集合的@Insert和@Update注释。但是,我有一个需要UPSERT的用例(包含模型的推送通知),因为数据库中可能存在也可能不存在数据。Sqlite本身没有upsert,解决方法在此SOquestion中进行了描述。.鉴于那里的解决方案,如何将它们应用于Room?更具体地说,如何在Room中实现不会破坏任何外键约束的插入或更新?使用带有onConflict=REPLACE的insert将导致调用该行的任何外键的onDelete。在我的情况下,onDelete会导致级联,重新插入一行将导致其他表中具有外键的行被删除。这不是预期的

SQLite - UPSERT *不是* INSERT 或 REPLACE

http://en.wikipedia.org/wiki/UpsertInsertUpdatestoredproconSQLServer在SQLite中是否有一些我没有想到的聪明的方法来做到这一点?基本上,如果记录存在,我想更新四列中的三列,如果它不存在,我想用第四列的默认值(NUL)插入记录。ID是主键,因此UPSERT永远只有一条记录。(我试图避免SELECT的开销,以便确定我是否需要更新或显然插入)建议?我无法在SQLite站点上确认TABLECREATE的语法。我没有构建演示来测试它,但它似乎不受支持。如果是,我有三列,所以它实际上看起来像:CREATETABLEtable1(

c# - Entity Framework - 唯一索引上的 UPSERT

我对我的问题进行了一些搜索,但找不到任何真正有用的东西。所以我的问题/困境是这样的:我知道mysql数据库有一个唯一的索引系统,可以使用这种格式在同一查询中用于插入/更新:在重复键更新时插入t(a,b,c)values(1,1,1)b=values(b),c=values(c);以及用于用该索引替换现有记录的替换格式。老实说,我在MSSQL中看到的唯一类似的东西是merge但我真的一点都不喜欢它并且验证要插入或更新的查询不是基于唯一索引之后所有...那么如何将mysql唯一的UPSERT模拟到EntityFramework中呢?这是我的主要问题...我的意思是不从实体集中获取记录并检查

ruby - 在 Mongoid 中插入

在Mongoid中是否有一种内置的方式来制作upsert(如果不存在则插入)?或者我应该先检查一个项目是否存在,然后再进行插入/更新? 最佳答案 Mongoid已经内置了upsert方法PerformsaMongoDBupsertonthedocument.Ifthedocumentexistsinthedatabase,itwillgetoverwrittenwiththecurrentattributesofthedocumentinmemory.Ifthedocumentdoesnotexistinthedatabase,it

ruby - 在 Mongoid 中插入

在Mongoid中是否有一种内置的方式来制作upsert(如果不存在则插入)?或者我应该先检查一个项目是否存在,然后再进行插入/更新? 最佳答案 Mongoid已经内置了upsert方法PerformsaMongoDBupsertonthedocument.Ifthedocumentexistsinthedatabase,itwillgetoverwrittenwiththecurrentattributesofthedocumentinmemory.Ifthedocumentdoesnotexistinthedatabase,it

node.js - (mongoose/promises) 你如何检查文档是否是使用 findOneAndUpdate 和 upsert 创建的

考虑这段代码,我需要在其中创建或更新特定文档。Inbox.model.findOneAndUpdate({number:req.phone.number},{number:req.phone.number,country:req.phone.country,token:hat(),appInstalled:true},{new:true,upsert:true}).then(function(inbox){/*dosomethingherewithinbox,butonlyiftheinboxwascreated(notupdated)*/});Mongoose是否有能力区分文档是创建

node.js - (mongoose/promises) 你如何检查文档是否是使用 findOneAndUpdate 和 upsert 创建的

考虑这段代码,我需要在其中创建或更新特定文档。Inbox.model.findOneAndUpdate({number:req.phone.number},{number:req.phone.number,country:req.phone.country,token:hat(),appInstalled:true},{new:true,upsert:true}).then(function(inbox){/*dosomethingherewithinbox,butonlyiftheinboxwascreated(notupdated)*/});Mongoose是否有能力区分文档是创建