使用点表示法更新嵌入式文档将返回mongowriteException

时间:2018-11-07 22:03:39

标签: mongodb bson mongo-java-driver

我已在mongoDB中插入以下文档

  

{ "_id" : ObjectId("5be347025dba9f208cc0e03f"), "subject" : "test_entry_1", "date" : "Nov11", "address" : [ { "country" : "canada", "province" : "ontario", "city" : "toronto" }, { "country" : "united states", "states" : "florida", "city" : "tampa"
} ] }

当我尝试使用更新文档时

    Bson filter = Filters.eq("subject", doc2.get("subject"));
    Bson update = new Document("$set", 
            doc1.append("address.city", "unknown")) ;
    coll.updateOne(filter, update);`

我遇到以下错误:

  

线程“ main” com.mongodb.MongoWriteException中的异常:更新> path“ address.city”将在“ address”处产生冲突

我尝试使用以下命令在mongo shell上

db.debug.update({}, {$set: {"address.$[].city": "unknown"}})

记录已更新没问题。

关于什么导致Java代码错误的任何想法?作为参考,我正在使用mongodb-drive 3.8.2和mongo-java-driver 3.6.1

0 个答案:

没有答案