2016-12-15 8 views
1

Ich habe in den folgenden Sammlungen in MongoDBAbfrage erhalten Ergebnisse von 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" 
    } 

Von Java-Programm, ich möchte so abfragen, wenn ich Eingabe als Benutzernamen gebe ich alle Details des Benutzers abrufen möchten und seine Klassendetails. Kann mir irgendjemand dabei helfen? zuvor habe ich versucht

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

Was haben Sie tri ed bis jetzt? – Veeram

Antwort

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

Ich bekomme einen Fehler in der Nähe von collection.find() zeigt keine Symbolsammlung.Was ist Sammlung hier –

+0

Sammlung hier ist das Objekt der Klasse DBCollection, wo es auf Ihre Sammlung (Tabelle) in mongodb Datenbank bezieht. –

0

bekam ich meine Lösung mit einer kleinen change.I $ Symbol vor id entfernt und ich habe meine Antwort

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); 

aber ich habe in einem anderen point.I stecken möchte meine Abfrage basierend auf Subjekt-ID etwas wie folgt

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); 
Verwandte Themen