So speichern Sie den Timestamp-Typ in MongoDb | Java

8

Vom Java-Treiber möchte ich ein Dokument speichern, das wie folgt unter json in MongoDb aussieht

%Vor%

Optionen habe ich versucht.

Option 1: Karte doc = neue HashMap (1);

%Vor%

Es ergibt sich das unten nicht benötigte Format

%Vor%

Option 2:

%Vor%

ergibt sich:

%Vor%     
hellojava 12.01.2015, 05:42
quelle

2 Antworten

4

Ich habe Folgendes mit dem Standard-mongodb-java-Treiber (keine Federdaten) verwendet.

%Vor%

Und das MongoDB-Ergebnis für einen Fund lautet:

%Vor%

Also hängt die Serialisierung von BSONTimeStamp an den Klassennamen und die Klassenattribute und ihre Werte vom Spring-Data-Mongodb-Serializer ab. Sie sollten den Standard-java-mongodb-Treiber verwenden oder Java Date und das ISODate -Format in MongoDB verwenden.

Oder vielleicht könnten Sie den Spring-Data-Monodb-Serializer erweitern und Ihren eigenen Serializer und Deserializer für die Klasse BSONTimeStamp schreiben, um den MongoDB-Timestamp-Typ zu verwenden.

    
Simulant 12.01.2015, 09:46
quelle
4

Von MongoDB empfehlen sie, ein Datum zu speichern, da BSON Timestamp für den internen Gebrauch ist:

Ссылка

Der Unterschied besteht darin, dass Datum mehr Darstellungsbereich hat, da es sich um eine 64-Bit-Ganzzahl handelt, die die Anzahl der Millisekunden seit der Unix-Epoche darstellt.

In BSON Timestamp haben nur 32 Bits diesen Zweck; die anderen 32 Bits sind eine inkrementelle ordinale Ganzzahl innerhalb einer Sekunde, um die Eindeutigkeit des Wertes sicherzustellen. Ich nehme an, das ist der Grund, warum sie Timestamp in oplog verwenden.

Wenn Ihnen die Eindeutigkeit nichts ausmacht, empfehle ich ein Date (auch bekannt als ISOdate), also Option 2 oder Option 3:

%Vor%     
LinJuuichi 12.01.2015 09:53
quelle