2016-12-15 90 views
1

得到的結果我已經在MongoDB中查詢從MongoDB的

"userDetails" : [ 
     { 
      "user" : DBRef("users", "RAVI"), 
      "class1" : DBRef("classes", "1"), 
      "class2" : DBRef("classes", "2") 
     }, 
     { 
      "user" : DBRef("users", "TEJA"), 
      "class1" : DBRef("classes", "1"), 
      "class2" : DBRef("classes", "2") 
     }] 

    classes 
     { 
      "_id" : "1", 
      "maxScore" : "50", 
      "subject" : DBRef("subjects", "class1") 
    } 
    { 
     "_id" : "2", 
      "maxScore" : "80", 
      "subject" : DBRef("subjects", "class2") 
    } 
    users{ 
    "_id" : "RAVI", 
    "address" : "3-2-2222", 
    "lastClass" : "1" 
    "lastScore" : "" 
    } 
    { 
    "_id" : "TEJA", 
    "address" : "5-23", 
    "lastClass" : "1" 
    } 

以下集合從Java程序,我想查詢這樣,當我通過輸入用戶名我想獲取該用戶的所有細節和他的課程細節。任何人都可以幫助我解決這個問題? 以前我試過

BasicDBObject fields = new BasicDBObject("userDetails", 1).append("userDetails", new BasicDBObject("$elemMatch", new BasicDBObject("user.$id", "RAVI"))); 
     BasicQuery query = new BasicQuery(new BasicDBObject(), fields); 
     List<UserDetails> usrDetailsList = mongoTemplate.find(query, UserDetails.class); 
+0

你有什麼三編輯到目前爲止? – Veeram

回答

0
//Considering you have data inserted in your collection, now this following code will fetch a specific record from collection: 

    BasicDBObject whereQuery = new BasicDBObject(); 

    whereQuery.put("user","RAVI"); //here you are specifying that you want all details of user-RAVI 

    DBCursor cursor = collection.find(whereQuery); 

while(cursor.hasNext()) { 
    System.out.println(cursor.next()); 
} 
+0

我在collection.find()附近收到一個錯誤,指出找不到符號集合。這裏的集合是什麼 –

+0

這裏的集合是DBCollection類的對象,它指向MongoDB數據庫中的集合(表)。 –

0

我得到了我與未成年人change.I方案ID刪除之前$象徵,我得到了我的答案

BasicDBObject fields = new BasicDBObject("userDetails", 1).append("userDetails", new BasicDBObject("$elemMatch", new BasicDBObject("user.id", "RAVI"))); 
    BasicQuery query = new BasicQuery(new BasicDBObject(), fields); 
    List<UserDetails> usrDetailsList = mongoTemplate.find(query, UserDetails.class); 

但我被困在另一個point.I想搜索我的基於主題ID的查詢如下

BasicDBObject fields = new BasicDBObject("userDetails", 1).append("userDetails", new BasicDBObject("$elemMatch", new BasicDBObject("class1.$subject.$id", "class1"))); 
    BasicQuery query = new BasicQuery(new BasicDBObject(), fields); 
    List<UserDetails> usrDetailsList = mongoTemplate.find(query, UserDetails.class);