2016-10-12 4 views
0

안녕하세요. 삽입 할 때 오류가 계속되면 mongoid에서 작동하지 않습니다. {: 1, CAMPAIGN_ID : 1 actor_vid}, {독특한 : partialFilterExpression 사실 : {CAMPAIGN_ID : {$가 존재 : TRUE}}} 많은 mongo 삽입 - 계속 루비/Ruby Mongo와 동일한 기능의 mysql 삽입 무시

나는 다음과 같은 고유 인덱스

db.push_notifications.createIndex을 (설정)

PushNotification.collection.insert_many ([{: campaign_id => "1", : actor_vid => 9}, {: campaign_id => "1", : actor_vid => 8}], : continue_on_error => true , : safe => false)

PushNotification.collection.insert_many ([{: 캠페인 _id => "1, : actor_vid => 9}, {: campaign_id =>"1 ", : actor_vid = > 10}], : continue_on_error =이>는 true, :) 안전 => 거짓 는

몽고 :: 오류 :: BulkWriteError가 발생합니다 : 몽고 :: 오류 :: BulkWriteError 을 /home/deploy/.bundler/에서 notification_service/ruby ​​/ 2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write/result.rb : 184 : validate!' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write/result_combiner.rb:73:in 결과 ' from /home/deploy/.bundler/notification_service/ruby/2.2.0/ gems/mongo-2.2.5/lib/mongo/bulk_write.rb : 65 : execute' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/collection.rb:385:in에서 bulk_write ' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/ mongo/collection.rb : 363 : insert_many' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/query_cache.rb:168:in insert_many_with_clear_cache ' from (irb) : 133 from /home/deploy/.bundle r/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 : console' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in에서 run_command! ' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2.6/lib/rails/commands.rb:17:in <top (required)>' from script/rails:6:in 스크립트에서 ' 필요/레일스 : 6 : '

또는MySQL의 삽입에 대한 동등한 몽고을 무시 무엇입니까? 정렬되지 않은 방식으로 거짓이 삽입이 일어날 것입니다 : 나는 instead.By가 주문한 지정 정렬되지 않은 삽입,

답변

2

continue_on_error가 insert_many에 대한 옵션이 없습니다 독특한 키에 우회 오류 insert_many 작업을 수행 사용해야 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 몽고 :: 오류 :: BulkWriteError 예외를해야합니다, 귀하의 코드를 어떻게해야합니다.

+0

안녕하세요. 여전히 동일한 오류가 발생합니다. –

+0

잘 작동합니다. 감사 –