如何使用Java驱动程序使用Mongo Bulk Update?

时间:2015-05-19 08:27:55

标签: mongodb mongo-java

我正在使用其Java Driver 2.13进行Mongo Bulk Update。

    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"));

我遇到以下异常:

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)

1 个答案:

答案 0 :(得分:3)

错误的原因是因为在进行更新时必须使用更新运算符。有关更新运算符的列表,请参阅http://docs.mongodb.org/manual/reference/operator/update/

在我收集的示例中,您将名称字段设置为" dev",因此您需要使用$set运算符,如下所示:

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