2016-12-15 2 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 программы, я хочу, чтобы запросить таким образом, что, когда я прохожу ввод в качестве имени пользователя я хочу, чтобы извлечь все подробности этого пользователя и его классы details.can любой помочь мне с этим? ранее я пытался

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 удалены $ символа, прежде чем ид и я получил мой ответ

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); 
Смежные вопросы