Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to initializeUnorderedBulkOp()?

New to MongoDB, I am trying to optimize bulk writes to the database. I do not understand how to initialize the Bulk() operations, though.

My understanding is that since the inserts will be done on a collection, this is where (or rather "on what") initializeUnorderedBulkOp() should be initialized:

The code below covers all the cases I can think of:

import pymongo

conn = pymongo.MongoClient('mongodb.example.com', 27017)
db = conn.test
coll = db.testing

# tried all of the following
# this one does not make much sense to me as I insert to a collection, added for completeness
bulk = db.initializeUnorderedBulkOp()
# that one seems to be the most reasonable to me   
bulk = coll.initializeUnorderedBulkOp()
# that one is from http://blog.mongodb.org/post/84922794768/mongodbs-new-bulk-api   
bulk = db.collection('testing').initializeUnorderedBulkOp()

# the staging and execution
# bulk.find({'name': 'hello'}).update({'name': 'hello', 'who': 'world'})
# bulk.execute()

The exception raised is

TypeError: 'Collection' object is not callable. If you meant to call the 'initializeUnorderedBulkOp' method on a 'Database' object it is failing because no such method exists.

with 'Database' for the first case and 'Collection' for the last two

How should I use initializeUnorderedBulkOp() ?

like image 764
WoJ Avatar asked Dec 09 '14 13:12

WoJ


1 Answers

In Python (using the pymongo module), the method name is not initializeUnorderedBulkOp but initialize_unordered_bulk_op.

You have to call it, as you correctly guessed, on the collection (in your case, coll.initialize_unordered_bulk_op() should work).

like image 152
Pierre Avatar answered Sep 27 '22 21:09

Pierre