sql >> Databáze >  >> NoSQL >> MongoDB

Deserializace MongoDB BSON

Pro zájemce jsem našel řešení mého problému. Ukázalo se, že formát BSON lze analyzovat stejně jako JSON pomocí ovladače GSON od Googlu . Jedna záludná část, se kterou jsem se musel vypořádat, bylo vymyslet způsob, jak uložit vnořená pole v mé třídě šablon. Způsob, jak umožnit GSON analyzovat vnořené dokumenty, je deklarovat statické vnitřní třídy ve vaší třídě šablony. Zde je příklad:

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
  }

atd.

Deklarování třídy šablony podle výše uvedeného rámce mi umožnilo snadno analyzovat formátování MongoDB pomocí několika řádků kódu z knihovny GSON. Vezměte prosím na vědomí, že při vracení dat z mé webové služby jsem ke každému záznamu zřetězil „\n“, abych oddělil každý dokument v Mongoově BSON odpovědi:

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. Jak získat zpět novou hodnotu po aktualizaci ve vloženém poli?

  2. $push používá příliš mnoho paměti a nemůže se přenést na disk. Limit paměti:104857600 bajtů

  3. Jaké jsou MongoDB výchozí uživatel a heslo?

  4. Jak získat výsledky příkazu mongo do plochého souboru