2016-03-20 10 views
0

mongoidを使用して順序付けられていない一括操作を実行するにはどうすればよいですか?mongoid bulk operation - initialize_unordered_bulk_op

bulk = Class.collection.initialize_unordered_bulk_op 

などなど: mongo_unordered_bulk_write

bulk = coll.initialize_unordered_bulk_op 
bulk.insert({'_id' => 1}) 
bulk.insert({'_id' => 1}) # duplicate key 
bulk.insert({'_id' => 3}) 
bulk.insert({'_id' => 3}) # duplicate key 
bulk.execute 

答えて

1

Mongoidクラスは、コアドライバからCollectionオブジェクトへのアクセスを提供します.collectionアクセサを持っています。

しかし、一般的に、標準的なオブジェクトのより一貫bulk_write()方法と配列を使用するために近代的なドライバーに好まれている:あなただけの挿入を行うと、書き込み操作の種類を混合していない場合

ops = []; 

ops.push({ "insert_one" => { "_id" => 1 } }) 
ops.push({ "insert_one" => { "_id" => 1 } }) 
ops.push({ "insert_one" => { "_id" => 3 } }) 
ops.push({ "insert_one" => { "_id" => 3 } }) 

Class.collection.bulk_write(ops,{ "ordered" => false }) 

あるいはinsert_many()を:

Class.collection.insert_many([ 
    { "_id" => 1 }, 
    { "_id" => 1 }, 
    { "_id" => 3 }, 
    { "_id" => 3 } 
],{ "ordered" => false })