updateOne / updateMany fails

1,341 views
Skip to first unread message

atuladh...@gmail.com

unread,
Oct 28, 2017, 10:49:20 PM10/28/17
to kmongo
I am trying to update the values on collection using updateOne / updateMany
col.updateOne(
"""{name: "John"}""",
"""{name: "Adam"}""",
UpdateOptions()
)

But I get exception like this

Exception in thread "main" java.lang.IllegalArgumentException: Invalid BSON field name name
at org.bson.AbstractBsonWriter.writeName(AbstractBsonWriter.java:530)
at org.bson.codecs.BsonDocumentCodec.encode(BsonDocumentCodec.java:114)
at org.bson.codecs.BsonDocumentCodec.encode(BsonDocumentCodec.java:41)
at com.mongodb.connection.UpdateCommandMessage.writeTheWrites(UpdateCommandMessage.java:76)
at com.mongodb.connection.UpdateCommandMessage.writeTheWrites(UpdateCommandMessage.java:43)
at com.mongodb.connection.BaseWriteCommandMessage.encodeMessageBodyWithMetadata(BaseWriteCommandMessage.java:120)
at com.mongodb.connection.RequestMessage.encodeWithMetadata(RequestMessage.java:147)
at com.mongodb.connection.WriteCommandProtocol.sendMessage(WriteCommandProtocol.java:212)
at com.mongodb.connection.WriteCommandProtocol.execute(WriteCommandProtocol.java:93)
at com.mongodb.connection.UpdateCommandProtocol.execute(UpdateCommandProtocol.java:55)
at com.mongodb.connection.UpdateCommandProtocol.execute(UpdateCommandProtocol.java:37)
at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:159)
at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289)
at com.mongodb.connection.DefaultServerConnection.updateCommand(DefaultServerConnection.java:143)
at com.mongodb.operation.MixedBulkWriteOperation$Run$3.executeWriteCommandProtocol(MixedBulkWriteOperation.java:490)
at com.mongodb.operation.MixedBulkWriteOperation$Run$RunExecutor.execute(MixedBulkWriteOperation.java:656)
at com.mongodb.operation.MixedBulkWriteOperation$Run.execute(MixedBulkWriteOperation.java:409)
at com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:177)
at com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:168)
at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:424)
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:415)
at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:168)
at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:74)
at com.mongodb.Mongo.execute(Mongo.java:819)
at com.mongodb.Mongo$2.execute(Mongo.java:802)
at com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:550)
at com.mongodb.MongoCollectionImpl.update(MongoCollectionImpl.java:542)
at com.mongodb.MongoCollectionImpl.updateOne(MongoCollectionImpl.java:381)
at org.litote.kmongo.ExtensionsKt.updateOne(extensions.kt:365)
at atuladhar.aman.kotlin.mongodb.ApplicationKt.main(Application.kt:58)

How do I fix this?

zigzago

unread,
Oct 29, 2017, 9:47:06 AM10/29/17
to kmongo
You need to write something like this:

col.updateOne("{name:'Paul'}", "{$set:{name:'John'}}")

More samples in the dedicated test: https://github.com/Litote/kmongo/blob/master/kmongo-core-tests/src/main/kotlin/org/litote/kmongo/UpdateTest.kt#L34
Reply all
Reply to author
Forward
0 new messages