Сопоставление объекта JAVA с документом MongoDB с использованием jongo

Привет у меня есть коллекция следующего формата

{
    "_id" : ObjectId("572eb5df1d739cc73c21f953"),
    "address" : {
            "building" : "469",
            "coord" : [
                    -73.961704,
                    40.662942
            ],
            "street" : "Flatbush Avenue",
            "zipcode" : "11225"
    },
    "borough" : "Brooklyn",
    "cuisine" : "Hamburgers",
    "grades" : [
            {
                    "date" : ISODate("2014-12-30T00:00:00Z"),
                    "grade" : "A",
                    "score" : 8
            },
            {
                    "date" : ISODate("2014-07-01T00:00:00Z"),
                    "grade" : "B",
                    "score" : 23
            },
            {
                    "date" : ISODate("2013-04-30T00:00:00Z"),
                    "grade" : "A",
                    "score" : 12
            },
            {
                    "date" : ISODate("2012-05-08T00:00:00Z"),
                    "grade" : "A",
                    "score" : 12
            }
    ],
    "name" : "Wendy'S",
    "restaurant_id" : "30112340"
}

Я сделал 3 очень простых класса для отображения объектов. Рестораны, адрес и класс. они имеют следующий формат Ресторан

public String _id;
public Address address;
public String town;
public String cuisine;
public String name;
public String r_id;
public Grade [] grades;

Адрес

public int building;
public String street;
public long zip;
public float [] coord;

Оценка

public String date;
public char grade;
public int score;

Я написал простейший код только для toString() сопоставленного объекта и смотрю, что я получаю

DB db = new MongoClient().getDB("test");
Jongo j = new Jongo(db);
MongoCollection collection = j.getCollection("restaurants");
Restaurant r1 = collection.findOne().as(Restaurant.class);
System.out.println(r1);

Этот код выводит

Restaurant: 572eb5df1d739cc73c21f953 / Wendy'S
Cuisine: Hamburgers
Restaurant ID: null
Address: 469 Flatbush Avenue 0, null
Grades: Tue Dec 30 05:00:00 PKT 2014 A / 8
Grades: Tue Jul 01 05:00:00 PKT 2014 B / 23
Grades: Tue Apr 30 05:00:00 PKT 2013 A / 12
Grades: Tue May 08 05:00:00 PKT 2012 A / 12

Кажется, я не могу исправить значение null, которое я получаю для почтового индекса и restaurant_id.

Кто-нибудь, пожалуйста, помогите. Спасибо.


person Newton    schedule 11.05.2016    source источник


Ответы (1)


Имена ваших полей не совпадают с именами документов, поэтому они не сопоставляются. Если я правильно помню, вы можете использовать @JsonProperty для сопоставления этих имен полей Java с именами документов, которые вы получаете из mongodb.

person evanchooly    schedule 11.05.2016
comment
эй, ты один из инструкторов MongoDB, верно? Я совершенно новичок в этом. то, что вы сказали, сработало. где я могу прочитать больше об этих аннотациях? - person Newton; 11.05.2016
comment
jongo использует аннотации Джексона, поэтому эти документы — ваш лучший вариант. Я не инструктор в MongoDB, нет, но я работаю на них, поддерживая Morphia среди других обязанностей. - person evanchooly; 12.05.2016