2016-07-21 5 views
0

Ich habe 2 Sammlungen, eine referenziert die andere durch eine fremde ObjectId. Ich versuche, eine $ lookup auf den 2 Sammlungen durchzuführen. Die Sache ist die ausländische ObjectId als Dokument mit dem folgenden Format gespeichert:

"testId" : { "timestamp" : 1469105907, "machineIdentifier" : 8036392, "processIdentifier" : 7899, "counter" : 12372063, "timeSecond" : 1469105907, "time" : NumberLong("1469105907000"), "date" : NumberLong("1469105907000") }

Während die ObjectId die oben wird beziehe ist in diesem Format:

ObjectId("5790c6437aa0281e0f534729") 

Wie speichere ich de ausländische ObjecId mit dem sae-format wie es sich bezieht?

Ich benutze Java-Treiber und Mongo 3.2.0 !!! und Speichern des Dokuments wie folgt:

Test at = new Test(); 
     at.setForeignId(new ObjectId("5790c6437aa0281e0f534729")); 
+0

Warum verwenden Sie ein solches Format, um ausländische testId beziehen, können Sie es nur als ObjectId speichern? Ihr testId-Dokument ähnelt Informationen, die die ObjectId darstellen, siehe Dokumentation https://docs.mongodb.com/manual/reference/method/ObjectId/ –

Antwort

0

Entschuldigen Sie! Das Problem war in der Dokumenteinfügung. Ich benutzte ein Mapper-Objekt, das die ObjectId auf diese Weise rendert. !!! tun dies nicht nutzen:

org.codehaus.jackson.map.ObjectMapper mapper = new ObjectMapper(); 
     String jsonString = mapper.writeValueAsString(POJO_OBJECT); 
     Document doc = Document.parse(jsonString); 

ich durch die Schaffung eines Dokuments die Art und Weise unter den gesamten Einführungsprozess neu zu konfigurieren hatte:

Document doc = new Document(); 
    doc.append("_id", POJO_OBJECT.theObjectId); 
    doc.append("foreign", POJO_OBJECT.theForeignId); 
    doc.append("objectOne", POJO_OBJECT.objectOne); 
    doc.append("objectTwo", POJO_OBJECT.objectTwo); 
    ... 

und verwenden dann diese doc zum Einsetzen !!!! hoffe, dass speichern einige Menschen davon Kopfschmerzen

Verwandte Themen