我收集了约100万条记录,每个记录有20个字段。我需要更新flag
每个记录(文档)中的整数字段,并向该flag
字段随机分配1或2
。在游标遍历整个集合时如何执行此操作?第二次搜索MongoDB已经找到的对象只是为了能够更新它似乎不是一个好主意:
DBCursor cursor = coll.find();
try {
while(cursor.hasNext()) {
BasicDBObject obj = (BasicDBObject) cursor.next();
...
coll.update(query,newObj)
}
} finally {
cursor.close();
}
如何有效地更新具有不同值的巨大MongoDB集合的每个文档中的字段?
您的方法基本上是正确的。但是,我不会将这样的集合视为“巨大的”。您可以从shell运行类似的东西:
coll.find({}).forEach(function (doc) {
doc.flag = Math.floor((Math.random()*2)+1);
coll.save(doc);
});
根据您的MongoDB版本,配置和负载,这可能需要几分钟到几小时
如果要批量执行此更新,请在查询文档中使用某些条件,例如coll.find({"aFiled" : {$gt : minVal}, "aFiled" : {$lt : maxVal}})
有没有一种方法我可以用某种方式迭代光标我可以暂停它,然后再继续?MongodbCursor保存最后访问的项目?我只知道foreach迭代,但是否有一些像这样的迭代? 如果有类似的东西存在,我可以保存查询的最后一个项目。提前致谢
我正在从数据库resultset获取一个巨大的ArrayList,并尝试在Java中迭代它(尝试从中获取值)。在对其进行迭代时,我在一个特定的行上得到一个concurrentModificationException我尝试使用各种解决方案,但却一次又一次地得到相同的错误,我在下面发布代码 我在myDTo.getsom_num().ToString()这一行上遇到异常。有谁能帮我解决这个问题吗
是否可以在java中并行地迭代一个集合。我正在中寻找类似C#的东西-命名空间
我想在字符串与给定值匹配时更新该值 有没有人可以使用Java streams API来实现上述功能
这应该是非常简单的,但我还没有得到它的工作。 为什么我得到: 我想得到的是:
问题内容: 我正在研究一个难题,其中涉及分析所有大小的k个子集,并找出哪个子集是最佳的。我写了一个解决方案,当子集的数量很少时可以使用,但是对于较大的问题,它用尽了内存。现在,我正在尝试将用python编写的迭代函数转换为java,以便我可以在创建每个子集时对其进行分析,并仅获取代表其优化程度的值,而不是整个集的值,以便不会耗尽记忆。这是我到目前为止的内容,即使很小的问题也似乎还没有解决: 有人可