1. #1
    Commander
    Dabei seit
    Feb 2006
    Ort
    Rüthen-Langenstraße
    Beiträge
    2.411

    [Java] MongoDB Query mit Abfrage mit BasicDBList

    Hi,
    ich versuche derzeit bei MongoDB eine Abfrage hinzubekomme welche mir als ergebnis alle Objekte liefert welche in in dem Objekt in einem BasicDBList enthalten sind.
    Wenn ich dieses Objekt für einen Query nehme bekomme ich aber nur das erste der darunter aufgeführten Objekte zurück. Es scheint also das ich für eine korrekte Antwort noch was vergessen habe, ich habe aber bisher noch nichts dazu
    im Netz gefunden was mir weiter geholfen hat. Hat von euch zufällig jemand eine Idee

    Code:
    File file1 = new File();
    file1.markAsPartialObject();
    file1.put("refs");
    file1.addReference("1234");
    Code:
    { 
            "_id" : ObjectId("521c9542aeaacf3ea0eec041"), 
            "refs" : [ 
                    "1234" 
           ] 
    },
    {
    	"_id" : ObjectId("521c960aaeaac6f3c92c34e3"),
    	"name" : "test2",
    	"refs" : [
    		"1234",
    		"1234567",
    		"1234567890"
    	]
    }
    Java Klassen.

    File.java
    Code:
    /**
     * 
     */
    
    import com.mongodb.BasicDBObject;
    
    public class File extends BasicDBObject {
    	public File() {
    		// TODO Auto-generated constructor stub
    	}
    	
    	public void addReference(String id){
    		if(!containsField("refs")){
    			ReferencesList referencesList = new ReferencesList();
    			put("refs", referencesList);
    		}
    		ReferencesList refs = (ReferencesList) get("refs");
    		refs.add(id);
    	}
    }
    ReferenceList.java
    Code:
    /**
     * 
     */
    
    import com.mongodb.BasicDBList;
    
    public class ReferencesList extends BasicDBList {
    	public ReferencesList() {
    		// TODO Auto-generated constructor stub
    		super();
    	}
    	
    	public void addReference(String id){
    		add(id);
    	}
    	
    	public void removeReference(String id){
    		remove(id);
    	}
    }
    Ergänzung vom 27.08.2013 17:17 Uhr: ok habe grade doch noch eine Lösung gefunden.

    Das Query Objekt muss mittels QueryBuilder zusammengefügt werden

    Code:
    QueryBuilder query = new QueryBuilder();
    DBObject obj = new BasicDBObject("refs", new BasicDBObject("$in", "1234"));
    query.or(obj);
    und kann dann mit
    Code:
    query.get()
    geholt werden.
    Desktop: Intel Core i5 3570@0.95V; ASRock H77 Pro4/MVP; 16GB TeamGroup Vulcano Gold DDR3-1600;
    Gigabyte GTX 980 Gaming G1; Eizo Foris FS2434 + Eizo Foris FS2333-BK; Samsung 840 EVO 1TB(Ubuntu 14.04 64Bit);
    Notebook: Lenovo Thinkpad Edge E145; A4-5000; 8GB DDR3-1600; Samsung EVO 840 250GB (Ubuntu 14.04 64Bit)
    Smartphone: Jolla Phone; LG Nexus 5
    Konsole: Wii U Premium & Xbox One @ Sony KDL-42W705B Handheld: New 3DS

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Forum-Layout: Feste Breite / Flexible Breite