Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mongo驱动程序更新不能更新所有文档_Java_Mongodb - Fatal编程技术网

Java Mongo驱动程序更新不能更新所有文档

Java Mongo驱动程序更新不能更新所有文档,java,mongodb,Java,Mongodb,对MongoDB 3.0.12使用Mongo Java驱动程序版本3.2.1 调用MongoCollection.updateMany(Bson filter,Bson update)将返回一个结果,显示所有预期文档都已修改,但实际上只更新了部分文档 我尝试过多种写作关注点:日志、确认等 有什么想法吗 以下是配置文件结果: { "op" : "update", "ns" : "dev.timeSheet", "query" : { "lineItems.task" : ObjectId("532

对MongoDB 3.0.12使用Mongo Java驱动程序版本3.2.1

调用
MongoCollection.updateMany(Bson filter,Bson update)
将返回一个结果,显示所有预期文档都已修改,但实际上只更新了部分文档

我尝试过多种写作关注点:日志、确认等

有什么想法吗

以下是配置文件结果:

{ "op" : "update", "ns" : "dev.timeSheet", "query" : { "lineItems.task" : ObjectId("53233e85e4b07f573f1d4466") }, "updateobj" : { "$set" : { "lineItems.$.task" : ObjectId("53233e85e4b07f573f1d446d") } }, "nscanned" : 0, "nscannedObjects" : 6733, "nMatched" : 248, "nModified" : 248, "fastmod" : true, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 52, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(53), "w" : NumberLong(53) } }, "MMAPV1Journal" : { "acquireCount" : { "w" : NumberLong(301) } }, "Database" : { "acquireCount" : { "w" : NumberLong(53) } }, "Collection" : { "acquireCount" : { "W" : NumberLong(53) } } }, "millis" : 50, "execStats" : {  }, "ts" : ISODate("2016-08-25T18:17:16.025Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" }
更新:也出现在MongoDB 3.2.9中 直接接入电话:

db.timeSheet.find({'lineItems.task': ObjectId("53233e85e4b07f573f1d4466")}).count()
126
db.timeSheet.updateMany({'lineItems.task': ObjectId("53233e85e4b07f573f1d4466")}, {'$set': {'lineItems.$.task': ObjectId("53233e85e4b07f573f1d446d")}})
{ "acknowledged" : true, "matchedCount" : 126, "modifiedCount" : 126 }
db.timeSheet.find({'lineItems.task': ObjectId("53233e85e4b07f573f1d4466")}).count()
90

这不是我期望的工作方式,因为它只是更新它为每个时间表找到的第一个
行项目

请记住,位置$operator充当更新查询文档的第一个匹配项的占位符

当前不存在更新嵌入阵列中所有项的功能


这不是我期望的工作方式,因为它只更新它为每个时间表找到的第一个
行项目

请记住,位置$operator充当更新查询文档的第一个匹配项的占位符

当前不存在更新嵌入阵列中所有项的功能


发布对MongoDB的实际调用,而不是抽象代码。否则我真的不知道如果update是指replace,那么就不要使用
$set
操作符。将实际调用发布到MongoDB,而不是抽象代码。否则我真的不知道如果更新是指替换,那么就不要使用
$set
操作符。