2016-04-26 9 views
1

Es ist das erste Mal, dass ich mongodb verwendet und ich fügte Dokument von Java auf diese Weise:Unter Dokument hinzufügen mit Java MongoDB

//document populated with for cycle 
document.append(element.getID().toString(), new Document("EL_ID", feedback.getPos(i).getID()) 
        .append("name", element.getName()) 
        .append("vote", 5) 
       ); 

//and write (replaceOne is correct for my program's logic) 
BasicDBObject searchQuery = new BasicDBObject().append("_id", MainDocID); 
collection.replaceOne(searchQuery, document); 

das Ergebnis:

{ 
"_embedded": {}, 
"_links": { ... }, 
"_type": "DOCUMENT", 
"_id": { ... }, 

"element_ID_1": { 
    "EL_ID": { 
     "$oid": "element_ID_1" 
    }, 
    "name": "one", 
    "vote": 5 
}, 
"element_ID_2": { 
    "EL_ID": { 
     "$oid": "element_ID_2" 
    }, 
    "name": "two", 
    "vote": 5 
}, 
"_created_on": "date" 
} 

Ich denke, es ist korrekt um diese Elemente in "_embedded" zu bringen und es ist auch mehr geordnet, aber ich weiß nicht, wie das geht.

Ich möchte dieses Ergebnis erreichen:

{ 
    "_embedded": { 

     "element_ID_1": { 
      "EL_ID": { 
      "$oid": "element_ID_1" 
      }, 
      "name": "one", 
      "vote": 5 
     }, 

     "element_ID_2": { 
      "EL_ID": { 
      "$oid": "element_ID_2" 
      }, 
      "name": "two", 
      "vote": 5 
     } 
    }, 
     "_links": {}, 
     "_type": "DOCUMENT", 
     "_id": {}, 
     "_created_on": "date" 
} 

oder zum Beispiel (die gleiche Prinzip): _embedded -> elements_lista -> "element_ID_n"

ich nicht ein Beispiel für meinen Fall finden konnte (aus Java-Code), ist jeder Vorschlag dankbar, danke.

Antwort

0

nach einigen Versuchen habe ich einfach ausgewertete eine Arraylist mit allen Elementen zu schaffen und diese mit dem String-Schlüssel in dem Dokument anhängen „_embedded“

0

Dies muss so gehandhabt werden, wie Sie die Daten in die Map einfügen.

Zuvor haben Sie die Schlüssel EL_ID, Name und Stimme in die Hauptkarte gesetzt. Sie müssen jedoch eine Karte erstellen, die besagt, dass _embedded und die Schlüssel, die oben erwähnt wurden, in sie eingefügt werden müssen.

Wenn dieses allgemeine DTO in die DB eingefügt wird, wird es in einer Struktur gespeichert, die Sie erwähnt haben.

+0

Ich habe eine Karte in diesem Teil des Programms nicht verwendet (die IDs gespeichert in einer Liste), für jetzt verlasse ich wie es ist. Wenn ich später Zeit habe, werde ich das Dokument verbessern. Danke aber. – adev

Verwandte Themen