插入许多mongo-继续执行错误ruby /相当于MySQL的Ruby Mongo插入忽略

高丹·提亚加拉真

您好,当我尝试继续进行错误插入操作时,它在mongoid中不起作用。

我设置以下唯一索引

db.push_notifications.createIndex({actor_vid:1,campaign_id:1},{唯一:true,partialFilterExpression:{campaign_id:{$ exists:true}}})

PushNotification.collection.insert_many([[{:campaign_id =>“ 1”,:actor_vid => 9},{:campaign_id =>“ 1”,:actor_vid => 8}],:: continue_on_error => true,:safe =>错误的)

PushNotification.collection.insert_many([[{:campaign_id =>“ 1”,:actor_vid => 9},{:campaign_id =>“ 1”,:actor_vid => 10}],:: continue_on_error => true,:safe =>错误)抛出

来自/home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write/result.rb的//home/deploy/.bundler/notification_service/ruby/2.2.0的Mongo :: Error :: BulkWriteError: 184:in validate!' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write/result_combiner.rb:73:inresult'from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write.rb:65:in execute' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/collection.rb:385:inbulk_write'from / home / deploy /。 bundler / notification_service / ruby​​ / 2.2.0 / gems / mongo-2.2.5 / lib / mongo / collection.rb:363:in(insert_many' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/query_cache.rb:168:in_irb)中的insert_many_with_clear_cache':133 from /home/deploy/.bundler/notification_service/ruby/ 2.2.0 / gems / railties-4.2.6 / lib / rails / commands / console.rb:110:start' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2.6/lib/rails/commands/console.rb:9:in从/home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2开始。 6 / lib / rails / commands / commands_tasks.rb:68:inconsole' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in运行命令!' 来自/home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2.6/lib/rails/commands.rb:17:in require'from <top (required)>' from script/rails:6:inscript / rails:6:in` '

什么是mysql insert ignoremongo等效项我需要执行insert_many操作,并绕过唯一键上的错误

沙沙语

continue_on_error不是insert_many的选项,而是使用无序插入。通过指定ordered:false,插入将以无序方式发生,并且将尝试插入所有请求。包括try catch块将确保它不会在插入后中断例外,因此您正在实现与MYSQL INSERT IGNORE等效的功能。如果您使用的是ROR,则代码应为这样,

begin
 PushNotification.collection.insert_many([{:campaign_id => "1",:actor_vid => 10},{:campaign_id => "1",:actor_vid => 11},{:campaign_id => "1",:actor_vid => 12}],{:ordered => false}) 
 PushNotification.collection.insert_many([{:campaign_id => "1",:actor_vid => 10},{:campaign_id => "1",:actor_vid => 11},{:campaign_id => "1",:actor_vid => 13}],{:ordered => false}) 
resque => ex 
 puts ex.message 
end

因此,在执行块之后,您将插入4个新条目和2个Mongo::Error::BulkWriteErrorException。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

相当于Java中的Ruby Hash

来自分类Dev

相当于Ruby Array.each方法的Python

来自分类Dev

相当于ruby Gem文件的Python

来自分类Dev

Ruby的Python的defaultdict相当于什么?

来自分类Dev

相当于PERL Carp-> cluck($ msg)在Ruby中

来自分类Dev

PHP相当于Ruby的拯救

来自分类Dev

相当于Ruby'is_a?'的Python

来自分类Dev

在mongo中相当于$ push的地图

来自分类Dev

相当于Ruby的each_with_index的Python吗?

来自分类Dev

在MySQL中插入许多列时的语法错误

来自分类Dev

Julia相当于Ruby的each_cons

来自分类Dev

相当于C#BitConverter.ToSingle的Ruby

来自分类Dev

Swift相当于Ruby的“收益”

来自分类Dev

相当于Ruby中chmod + x

来自分类Dev

Haskell相当于Ruby的slice_when

来自分类Dev

如何忽略重复的键并继续在mysql中插入?

来自分类Dev

相当于Ruby Object.methods()的Javascript

来自分类Dev

相当于Ruby的`send`的Javascript

来自分类Dev

Dart相当于Ruby的instance_eval

来自分类Dev

Ruby Sequel MySQL插入错误

来自分类Dev

在Mongo数据库中插入Ruby对象数组

来自分类Dev

相当于Ruby Time.now.to_i PHP

来自分类Dev

使用express插入mongo

来自分类Dev

扩展Scala特性的对象。相当于Ruby?

来自分类Dev

Haskell相当于Ruby的slice_when

来自分类Dev

Ruby Mongo-插入后获取ID

来自分类Dev

相当于 Spring MVC 中的设计(Ruby on Rails)?

来自分类Dev

ruby - 相当于核心库的“gem open”

来自分类Dev

Mongo 聚合管道项目组匹配(相当于 SQL select sum as group)