How to use Mongo Bulk Update using its Java Driver?

802 views
Skip to first unread message

Devender Yadav

unread,
May 19, 2015, 4:50:32 AM5/19/15
to mongod...@googlegroups.com
    I am using Mongo Bulk Update using its Java Driver 2.13.

    MongoClient mongo = new MongoClient("localhost", 27017);
    DB db = (DB) mongo.getDB("test");
    DBCollection collection = db.getCollection("collection");
    BulkWriteOperation builder = collection.initializeOrderedBulkOperation();
    builder.find(new BasicDBObject("_id", "1")).update(new BasicDBObject("_id", "1").append("name", "dev"));
 I got the following exception:
Caused by: java.lang.IllegalArgumentException: Update document keys must start with $: _id
at com.mongodb.DBCollectionImpl$Run.executeUpdates(DBCollectionImpl.java:769)
at com.mongodb.DBCollectionImpl$Run.execute(DBCollectionImpl.java:734)
at com.mongodb.DBCollectionImpl.executeBulkWriteOperation(DBCollectionImpl.java:149)
at com.mongodb.DBCollection.executeBulkWriteOperation(DBCollection.java:1737)
at com.mongodb.DBCollection.executeBulkWriteOperation(DBCollection.java:1733)
at com.mongodb.BulkWriteOperation.execute(BulkWriteOperation.java:93)

Ross Lawley

unread,
May 19, 2015, 4:57:02 AM5/19/15
to mongod...@googlegroups.com
Hi,

The reason for the error is because when doing updates you must use an update operator. 

See http://docs.mongodb.org/manual/reference/operator/update/ for a list of update operators.  
From your example I gather you are setting the name field to "dev", so you need to use the $set operator like so:

builder.find(new BasicDBObject("_id", "1"))
       .update(new BasicDBObject("$set", new BasicDBObject("name", "dev")));

Ross

Devender Yadav

unread,
May 19, 2015, 5:07:43 AM5/19/15
to mongod...@googlegroups.com
Thanks  a lot for the prompt reply. It's working now...:)
Reply all
Reply to author
Forward
0 new messages