MongoDB и Java объекты - PullRequest
       5

MongoDB и Java объекты

1 голос
/ 23 октября 2010

У меня есть следующий объект MongoDB, хранящийся в моей базе данных Mongo:

array (
  '_id' => new MongoId("4cc183de48aa4c7708000000"),
  'vehicleMake' => 'Volkswagen',
  'vehicleModel' => 'Carrier',
  'vehicleNumPassengers' => '7',
  'vehicleReg' => '07-D-748393',
  'coords' => 
  array (
    0 => 
    array (
      'lat' => '53.2594946',
      'lng' => '-6.1760780',
      'timestamp' => '12345678',
    ),
    1 => 
    array (
      'lat' => '53.8994946',
      'lng' => '-6.1460780',
      'timestamp' => '12345678',
    ),
  ),
)

И в java я могу получить доступ к полям «vehicleMake», «vehicleModel», «vehicleNumPassengers», «vehicleReg», используяследующий код:

Mongo mongo=new Mongo();
DB db=mongo.getDB("garage");
DBCollection cllctn=db.getCollection("drivers");
DBCursor allDrivers=cllctn.find();

while(allDrivers.hasNext()){
    DBObject driver=allDrivers.next();
    String vehicleMake=driver.get("smsVerified").toString();
    String vehicleModel=driver.get("vehicleModel").toString();
    String vehicleNumPassengers=driver.get("vehicleNumPassengers").toString();
    String vehicleReg=driver.get("vehicleReg").toString();
    //
    //How do I access 'lat', 'lon' and 'timestamp' here????
    //    
}

Мой вопрос: как мне получить доступ к значениям 'lat', 'lon' и 'timestamp' внутри массива MongoDB?Я в полном замешательстве и не могу найти что-либо на веб-сайте mongodb или в Google.

Я пытался возиться с BasicDBObject, но, похоже, ничего не получалось.

Любая помощь с благодарностью.

Большое спасибо заранее,

Ответы [ 2 ]

4 голосов
/ 23 октября 2010

нужно сделать:

BasicDBObject query = new BasicDBObject();
query.put("array.lat");
collection.find(query);

или

сделать это:

System.out.println(cursor.next().get("coords").get("lat"));

Вы также должны будете добавить к нему приведение BSONObject.

РЕДАКТИРОВАТЬ: Я думаю, что первый метод является неправильным. вам также нужна пара значений, чтобы идти вперед.

2 голосов
/ 23 октября 2010

@ Kaustubh, теперь все работает ...

BSONObject coords=(BSONObject)driver.get("coords");
BSONObject coords_first=(BSONObject) coords.get("0");
String lat=coords_first.get("lat").toString();
String lng=coords_first.get("lng").toString();
System.out.println(lat+"---"+lng);

Трюк был с BSONObject cast , который вы правильно упомянули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...