MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Deserializacja MongoDB BSON

Dla zainteresowanych znalazłem rozwiązanie mojego problemu. Okazuje się, że format BSON można analizować tak samo jak JSON przy użyciu sterownika Google GSON. Jedyną trudną częścią, z którą musiałem sobie poradzić, było wymyślenie sposobu przechowywania zagnieżdżonych pól w mojej klasie szablonów. Sposobem na umożliwienie GSON analizowania zagnieżdżonych dokumentów jest zadeklarowanie statycznych klas wewnętrznych w klasie szablonu. Oto przykład:

public BSONObject {
   // Private fields
   private int foo;
   private String bar;

  // Constructors
  public BSONObject() {}

  // Static inner subclasses
  private Widget widget;
  private Duck quack;

  // Getters & Setters for outer class
  public int getFoo() {...}
  public String getBar() {...}
  public Widget getWidget() {...}
  public Duck getDuck() {...}

  // Static inner class declarations
  public static Widget {
     // include vars & getters/setters
  }

itp.

Zadeklarowanie klasy szablonu zgodnie z powyższym frameworkiem pozwoliło mi łatwo przeanalizować formatowanie MongoDB za pomocą kilku linijek kodu z biblioteki GSON. Zwróć uwagę, że połączyłem "\n" z każdym wpisem podczas zwracania danych z mojego serwisu internetowego, aby oddzielić każdy dokument w odpowiedzi Mongo BSON:

public String getNestedField() {
   Gson gson = new Gson();
   String [] split = response.split("\n");
   JsonParser p = new JsonParser();
   String json = split[0];
   BSONObject b = gson.fromJson(p.parse(json), BSONObject.class);
   return b.getWidget().getField();
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. docker-compose, aby uruchomić django z mongodb

  2. łączenie z bazą danych atlas mongo

  3. Mongo ObjectIDs:bezpieczne w użyciu na wolności?

  4. Kiedy indeksować, co indeksować w Mongoid?

  5. Lista atrybutów dynamicznych w modelu Mongoid