所以情況如此:我有一個程序需要兩個大的csv文件,找到差異,然後發送一個數組列表到一個方法,該方法應該用數組中的行更新mongodb。問題是更新正在持續進行。一個包含5000個更新的測試用例需要36分鐘。這是正常的嗎?用java驅動更新mongodb需要永久嗎?
的update(List<String> changes)
- 方法是這樣的:
mongoClient = new MongoClient(ip);
db = mongoClient.getDB("foo");
collection = db.getCollection("bar");
//for each line of change
for (String s : changes) {
//splits the csv-lines on ;
String[] fields = s.split(";");
//identifies wich document in the database to be updated
long id = Long.parseLong(fields[0]);
BasicDBObject sq = new BasicDBObject().append("organizationNumber",id);
//creates a new unit-object, that is converted to JSON and then inserted into the database.
Unit u = new Unit(fields);
Gson gson = new Gson();
String jsonObj = gson.toJson(u);
DBObject objectToUpdate = collection.findOne(sq);
DBObject newObject = (DBObject) JSON.parse(jsonObj);
if(objectToUpdate != null){
objectToUpdate.putAll(newObject);
collection.save(objectToUpdate);
}
您是否檢查過服務器上的統計信息?看起來應該不會花費那麼長時間纔能有合理的配置。 – WiredPrairie
@WiredPrairie我剛剛安裝了它,我在找什麼?你看,這是我第一次使用mongo。 – user2507863
是否將'organizationNumber'編入索引? – WiredPrairie