Specjalny codec dla danej klasy w mongodb // BsonWriter

Specjalny codec dla danej klasy w mongodb // BsonWriter
MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Witam miał ktoś styczność z custom codecami w mongodb?
Mam problem gdyż chciałbym całkowicie wyrzucić objectid gdyż nie jest mi w żadnym stopniu potrzebne niestety tworzy się samo...

Kopiuj
@Override
    public void encode(BsonWriter writer, Location location, EncoderContext encoderContext) {
        writer.writeStartDocument();
        writer.writeString("world", location.getWorld().getName());
        writer.writeInt32("x", location.getBlockX());
        writer.writeInt32("y", location.getBlockY());
        writer.writeInt32("z", location.getBlockZ());
        writer.writeInt64("pitch", (long) location.getPitch());
        writer.writeInt64("yaw", (long) location.getYaw());
        writer.writeEndDocument();
    }

Z czego otrzymuje takie coś

Kopiuj
{"_id":{"$oid":"5eed343031e28a2ed2134656"},"world":"world","x":-70,"y":70,"z":275,"pitch":{"$numberLong":"-24"},"yaw":{"$numberLong":"104"}}
Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1909
2

Jest potrzebne wewnętrznie bazie, każdy dokument ma swój id

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2787
0

Nie wiem czy Ci to coś pomoże, ja mam np tak:

  1. model usera:
Kopiuj
public class User {

    private String name;
    private String email;
    @JsonIgnore
    private String hashedpw;

}
  1. Pojo Mongo codec:
Kopiuj
CodecRegistry pojoCodecRegistry =
                fromRegistries(
                        MongoClientSettings.getDefaultCodecRegistry(),
                        fromProviders(PojoCodecProvider.builder().automatic(true).build()));

        usersCollection = db.getCollection("users", User.class).withCodecRegistry(pojoCodecRegistry);

I, jak widać, w modelu User nie mam id - ono sobie żyje w bazie mongo, a ja w javie go nie wykorzystuję (w tym przypadku email jest i tak unique)

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Dobra już zrozumiałem jeśli bym ten obiekt zapisywał w kolekcji tylko dla tego typu obiektu automatycznie tworzy object id. Gdy jest to zwykła zmienna w innym obiekcie nie tworzy.

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2787
0

Możesz też, podczas wyciągania danego dokumentu z kolekcji mongo, posłużyć się projekcją, czyli np

Kopiuj
..
.projection(excludeId()))
..

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.