MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Десериализиране на MongoDB BSON

За тези, които се интересуват, намерих решението на моя проблем. Оказва се, че форматът BSON може да бъде анализиран точно като JSON с помощта на GSON драйвера на Google. Единствената трудна част, с която трябваше да се справя, беше измислянето на начин за съхраняване на вложени полета в моя шаблонен клас. Начинът да позволите на GSON да анализира вложени документи е да декларирате статични вътрешни класове във вашия шаблонен клас. Ето един пример:

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
  }

и т.н.

Декларирането на класа на шаблона след горната рамка ми позволи лесно да анализирам форматирането на MongoDB, използвайки няколко реда код от библиотеката GSON. Моля, обърнете внимание, че свързах "\n" към всеки запис, когато връщах данни от моята уеб услуга, така че да отделя всеки документ в BSON отговора на Mongo:

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. Как да използвам MongoDB Ruby Driver, за да направя група (групиране по)?

  2. Meteor Mongo findOne връща undefined в метод

  3. инсталиране на MongoDB java драйвер

  4. Преоформете масив, който се съхранява в колекция и експортирайте в CSV

  5. Документно-ориентираните бази данни са предназначени да заменят релационни бази данни?