2012-06-27 3 views
1

자바에서 Mongodb를 사용하고 있습니다. 그리고 문서 안에있는 문서를 검색하고 싶습니다.몽고 문서 검색

 DB db = null; 
     int count = 0; 

     //Enter the day for which you want to search for logged on users 
     String dayToSearch = "27-06-2012"; //Enter in the format dd-MM-yyyy 

     db = DatabaseConnection.getDatabaseObject(); 
     Set<String> colls = db.getCollectionNames(); 

     for (String s : colls) { 

      DBCollection coll = db.getCollection(s); 

      DBObject obj = coll.findOne(); 

      if(obj==null) 
       System.out.println("This is only null."); 

      DBObject obj1 = (DBObject)obj.get("LoginRequest"); 
      if(obj1!=null){ 
       String time = (String)obj1.get("Time"); 
       if(time==dayToSearch){ 
        BasicDBObject query = new BasicDBObject(); 
        query.put("LoginResponse", new BasicDBObject()); 
        DBCursor cur1 = coll.find(query); 
        if(cur1.hasNext()){ 
         count++; 
        } 
       } 
      } 
      else 
       System.out.println("It is null again!!!"); 
      System.out.println(s); 
     } 

     System.out.println("No.of users logged in successfully: " + count); 

하지만 난 DBOBJECT으로 obj1 = (DBOBJECT) obj.get ("LoginRequest")에서 null 값을 얻고있다 ;.

나는이 코드를 사용하고 각 컬렉션에 대한 모든 obj1 객체가 null로 나오고 있습니다. 나는 obj를 인쇄했고 올바른 것으로 나오고있다. obj1이 null로 나오고 있습니다.

내 데이터베이스는이 양식입니다 :

{ 
     "_id" : ObjectId("4fead665b79eedd6a5776f38"), 
     "test" : "hi", 
     "NBC Connection id" : "6f829b01382d556eaf16c34617C2", 
     "LoginRequest" : { 
       "Time" : "27-06-2012", 
       "Model" : null, 
       "Version" : null, 
       "Username" : "acpptu20000", 
       "Password" : "*******", 
       "Language" : "en", 
       "Manufacturer" : null 
     } 
} 
{ 
     "_id" : ObjectId("4fead67cb79eedd6a5776f5b"), 
     "GetInfoRequest" : { 
       "MaxCallLogs" : 45, 
       "MaxNewVoicemails" : 15, 
       "GetInfoDateOptions" : 7, 
       "MaxSavedVoicemails" : 15, 
       "SubscribeForUpdates" : false 
     } 
} 
+1

날짜 쿼리가있는 "LoginRequest"개체 만 가져 오시겠습니까? –

+0

내 LoginRequest는 다른 DBObject를 참조하십시오. 그래서 DBObject 변수에 저장하고 싶습니다. 그러나 그것을 캐스팅하여 저장할 때. 나는 그것을 null로 얻는다. 하지만 obj.get ("LoginRequest")을 할 때. 나는 제대로 인쇄 할 수 있습니다. – shalki

+0

이 대화방에 들어올 수 있습니까? http://chat.stackoverflow.com/rooms/12986/discussion-between-shalki-and-parvin – shalki

답변

1

내가 필요한 것보다 코드가 훨씬 더 복잡하다고 생각합니다. 그런
시도 뭔가 :

 for(String s : colls) 
     { 
      DBCollection coll = db.getCollection(s); 
      DBCursor whatIHaveBeenLookingFor = coll.find(
       new BasicDBObject().append("LoginRequest", 
       new BasicDBObject().append("Time", dayToSearch))); 
     } 

나는 주위에 당신의 데이터베이스가 없기 때문에 나는 이것을 테스트하지 않았다. 그래서 당신이 어떤 것을 바꾸어야 할 수도 있습니다. 그러나 이것은 쉽게 MongoDB에서 무언가를 검색 할 수있는 방법입니다.

추신 : 모든 컬렉션을 실제로 반복해야합니다.

+0

안녕하세요 ..하지만이 전체 문서 – shalki

+0

내게 줄 것이다 출력 : { "_id": ObjectId ("4fead665b79eedd6a5776f38"), "테스트": "안녕하세요", "NBC의 접속 ID": "6f829b01382d556eaf16c34617C2" "LoginRequest": { "시간": "27-06-2012" "모델" 널 (null), "버전"널 (null), "사용자 이름": "acpptu20000" "암호": "*******" "언어" "엉" "제조업체"널 를} } 그리고 각 컬렉션에도 해당됩니다. 각 컬렉션의 시간을 문자열로 표시하려고합니다. – shalki

+0

"문서 안의 문서를 검색하고 싶습니다." 거기 그것은 잘있다 : D! 그러나 dayToSearch에서 LoginRequest를 가진 모든 문서를 찾고 있지 않다면 나는 당신이 무엇을 찾고 있는지 모른다. – XiO

관련 문제