Я использую драйвер Java для mongoDB.У меня есть документ, который содержит AlbumName
, PreviewSize
, ThumbSize
, _id
& Comments
.PreviewSize
& ThumbSize
- массив.Я хочу знать, как я могу запросить этот документ и получить любое конкретное значение массива.
Чтобы быть более понятным, мой документ выглядит так:
Document : { "AlbumName" : "Test" , "PreviewSize" : [
{ "ImageName" : "tom_and_jerry_guns.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "Tom_and_Jerry,_Cartoons.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "TomJerry2_468x342.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "tom_and_jerry-5405.jpg" , "BinaryImage" : <Binary Data>}] ,
"ThumbSize" : [ { "ImageName" : "tom_and_jerry_guns.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "Tom_and_Jerry,_Cartoons.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "TomJerry2_468x342.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "tom_and_jerry-5405.jpg" , "BinaryImage" : <Binary Data>}] ,
"_id" : { "$oid" : "4cef03b44613b5ba2d51a7b8"} , "comments" : [ ]}
Как мне получить TomJerry2_468x342.jpg
и <Binary Data>
из PreviewSize
.
Я новичок в mongoDB.Я не знаю, возможно ли это или нет.Я только что создал этот документ, и я могу обновить этот документ с новыми изображениями.Я узнал об этом из этой презентации.
Мой вопрос, как я могу получить какой-то конкретный <Binary Data>
, когда у меня есть его имя?
Любые предложения будут более благодарными!
Спасибо !!!
Обновление
Например: // Код, который я пробовал,
BasicDBObject query = new BasicDBObject();
BasicDBObject field = new BasicDBObject();
field.put("PreviewSize", 1);
DBCursor cursor = coll.find(query, field);
while(cursor.hasNext()){
BasicDBObject result = (BasicDBObject) cursor.next();
int i = result.size();
System.out.println("Result Size: "+i);
System.out.println(result);
int i = result.size();
String imageName = (String) ((BasicDBList)result.get("PreviewSize")).get("ImageName");
System.out.println("Result Size: "+i+" Image Name :"+imageName);
byte[] imageByte = (byte[]) ((BasicDBList) result.get("PreviewSize")).get("BinaryImage");
if(imageByte != null){System.out.println("Wow! Great!!! Its Coming!!!");}
else{System.out.println("Try Another Way!");}
}// I am not sure this is exist(I am new to mongoDB). I need
something like that.
/* Some thing like the above list contains All contents of the
"PreviewSize" data <ImageName> & <BinaryData>.*/
ПервыйЯ попытался с помощью приведения (BasicDBObject), но я дал мне ошибку вроде cannot cast (BasicBSONList) to (BasicDBObject)
Затем я изменил ее на (BasicBSONList)
Я думаю, что я делаю неправильно в приемнике.Какой приемник я должен использовать !!! ???
Я попробовал описанный выше, и сообщение об ошибке, которое я получил в консоли:
Дисплей консоли:
Result Size: 2
{ "PreviewSize" : [ { "ImageName" : "tom_and_jerry_guns.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "Tom_and_Jerry,_Cartoons.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "TomJerry2_468x342.jpg" , "BinaryImage" : <Binary Data>} ,
{ "ImageName" : "tom_and_jerry-5405.jpg" , "BinaryImage" : <Binary Data>}] ,
"_id" : { "$oid" : "4cef03b44613b5ba2d51a7b8"}}
"Exception in thread "main" java.lang.IllegalArgumentException:
BasicBSONList can only work with numeric keys, not: [ImageName]"
Я совершенно новичок в mongoDB, как 3 дня назад :( .... Дайте мне выход !!!!
И я также хочу знать, есть лиспособ получения определенных данных, например, если я знаю любой ImageName
, могу ли я получить его BinaryData??