2016-12-15 87 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);