Ich benutze Java Treiber für mongoDB. Ich habe ein Dokument, das AlbumName
, PreviewSize
, ThumbSize
, _id
& Comments
enthält. PreviewSize
& ThumbSize
sind Array. Ich möchte wissen, wie ich dieses Dokument abfragen und irgendeinen spezifischen Feldwert erhalten kann.Array-Positionen in MongoDB abfragen?
mehr klar zu sein, ist mein Dokument wie diese,
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" : [ ]}
Wie soll ich die TomJerry2_468x342.jpg
und seine <Binary Data>
von PreviewSize
bekommen.
Ich bin neu in mongoDB. Ich weiß nicht, ob es möglich ist oder nicht. Ich habe dieses Dokument erstellt und kann dieses Dokument mit neuen Bildern aktualisieren. Ich habe dies von this Präsentation gelernt.
Meine Frage, wie kann ich eine spezifische <Binary Data>
bekommen, wenn ich seinen Namen habe?
Alle Vorschläge wären anerkennender!
Danke !!!
aktualisieren
Zum Beispiel: // Der Code habe ich versucht,
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>.*/
Zuerst habe ich mit versucht, durch (BasicDBObject) durch Gießen, aber ich gab mir einen Fehler wie den, cannot cast (BasicBSONList) to (BasicDBObject)
Dann Ich änderte es zu (BasicBSONList)
Ich denke, dass ich falsch im Empfänger tue. Welchen Empfänger sollte ich benutzen !!!
habe ich versucht, die oben ein, und die Fehlermeldung, die ich in der Konsole bekam ist,
Console Display:
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]"
Ich bin völlig neu für mongoDB, wie 3 Tage alt :(.... Gib mir einen Weg aus !!!!
Und wissen, ich möchte auch ist es eine Möglichkeit, bestimmte Daten abzurufen, Wie, wenn ich das jede ImageName
wissen kann ich seine 012.329 erhalten
Warum antwortet mir niemand? Ist die Frage nicht verständlich? Es gibt auch keine Kommentare !! –