mongodb 데이터베이스 의 필드 와 일치 합 니 다.

4597 단어 mongodbjson
앞에서 비교적 큰 xml 형식의 데이터 (약 50G) 를 분석 하고 mongodb 데이터베이스 에 가 져 오 는 방법 을 말 했 습 니 다. 지금 어떻게 하면 이렇게 큰 데 이 터 를 신속하게 일치 시 킬 수 있 습 니까?
방법 1:
       먼저 mongodb 데이터베이스 A 에서 일치 하 는 모든 필드 를 꺼 냅 니 다. mongodb 데이터베이스 B 는 일치 하 는 원시 데 이 터 를 해 야 합 니 다. 데 이 터 를 mongodb 데이터베이스 에서 꺼 낸 후에 해당 하 는 플랫폼 에서 실행 합 니 다. 즉, 처리 플랫폼 은 제3자 플랫폼 에서 작은 데이터 베 이 스 를 처리 하 는 것 이 괜 찮 습 니 다. 비교적 큰 데 이 터 를 처리 하면 훨씬 어렵 고 속도 가 느 립 니 다.코드 는 다음 과 같 습 니 다:
                Logger monglogger = Logger.getLogger("org.mongodb.driver");
		monglogger.setLevel(Level.SEVERE);
		
		//    NAME_      
		Mongo mongo = new Mongo("localhost", port);
		DB db = mongo.getDB("databaseName");
		DBCollection dbCollection = db.getCollection("collectionName");
		DBCursor dbCursor = dbCollection.find();
		dbCursor.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT);
		DBObject baDBObject = new BasicDBObject();
		Iterator<DBObject> iterator = dbCursor.iterator();
		List<String> list = new ArrayList<String>();
		while(iterator.hasNext()){
			baDBObject = iterator.next();
			String cityName = baDBObject.get("NAME_1").toString();
			String lowercityName = cityName.toLowerCase();
			String trimcityName = lowercityName.replaceAll(" ", "");
			// NAME_1         list 
			list.add(trimcityName);
			System.out.println(trimcityName);
			System.out.println("******************************");
		}
		
		
		DBCollection dbCollection1 = db.getCollection("testdata1");
		DBCollection dbCollection2 = db.getCollection("resultdata");
		DBCursor dbCursor1 = dbCollection1.find();
		dbCursor1.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT);
		DBObject baDbObject1 = new BasicDBObject();
		Iterator<DBObject> iterator1 = dbCursor1.iterator();
		List<DBObject> list1 = new ArrayList<DBObject>();
		while(iterator1.hasNext()){
			baDbObject1 = iterator1.next();
			String titlecityName = baDbObject1.get("title").toString();
			//System.out.println(titlecityName);
			String trimtitlecityName = titlecityName.replaceAll(" ", "");
			String lowerTitlcityName = trimtitlecityName.toLowerCase();
			System.out.println(lowerTitlcityName);
			System.out.println("      ");
			for(int i=0;i<list.size();i++){
				if(lowerTitlcityName.equals(list.get(i))){
					list1.add(baDbObject1);
					break;
				}
				dbCollection2.insert(list1);
				break;
			}
			System.out.println("      ");
		}
		mongo.close();
	}
         ,    : mongodb   B            ,    title       ,          title  
  mongodb   A        mongodb   B , mongodb    ,        ,       
<pre name="code" class="java">Logger monglogger = Logger.getLogger("org.mongodb.driver");
		monglogger.setLevel(Level.SEVERE);
		
		@SuppressWarnings("deprecation")
		Mongo mongo = new Mongo("locaohost", port);
		@SuppressWarnings("deprecation")
		DB db = mongo.getDB("databaseName");
		DBCollection dbCollection = db.getCollection("collectionName");
		DBCursor dbCursor = dbCollection.find();
		dbCursor.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT);
		Iterator<DBObject> iterator = dbCursor.iterator();
		DBObject dbObject = new BasicDBList();
		List<String> list = new ArrayList<String>();
		while(iterator.hasNext()){
			dbObject = iterator.next();
			String cityName = dbObject.get("NAME_1").toString();
			list.add(cityName);
			System.out.println(cityName);
		}
		
		
		DBCollection dbCollection3 = db.getCollection("resultdata");
		for(int i=0;i<list.size();i++){
			DBCollection dbCollection2 = db.getCollection("testdata1");
			List<DBObject> list2 = new ArrayList<DBObject>();
			System.out.println("      ");
			BasicDBObject query = new BasicDBObject();
			// list.get(i)  cityName   testdata1  title   
			DBObject objput = (DBObject) query.put("title", list.get(i).toString());
			DBCursor dbCursor2 = dbCollection2.find(query);
			//  MongCursorNotFoundException
			dbCursor2.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT);
			while(dbCursor2.hasNext()){
				objput = dbCursor2.next();
				//System.out.println(objput);
				list2.add(objput);
				if(list2 !=null){
					dbCollection3.insert(list2);
				}
				System.out.println("      ");
			}
		}
		mongo.close();
		System.out.println("mongodb      ,        ,     cityName  ");	
	}

좋은 웹페이지 즐겨찾기