2015-04-22 3 views
3

У меня есть следующие gridfs в базе данных MongoDB:не может бросить BasicDBObject к [B

db.outputFs.files.find() 

{ "_id" : ObjectId("000000000000000000000001"), "chunkSize" : 261120, "length" : 232, "md5" : "42290309186cc5420acff293b92ae21d", "filename" : "/tmp/outputFs-01.tmp", "contentType" : null, "uploadDate" : ISODate("2015-04-13T13:50:48.259Z"), "aliases" : null, "metadata" : { "estado" : "FICHERO_PDTE_ENVIO", "dataDate" : "20141122", "inputOutputFs" : "output", "gridFileCompression" : "bzip2", "fileType" : "OUTPUT-TEST1", "filePath" : "/tmp/outputFs-01.tmp", "sourceParticipant" : "0100", "destinationParticipant" : "REE", "exportFileName" : "F1_0100_20141122_20150219.0", "processed" : "false", "fileMD5" : "4276e61a4b63d3d1d1b77e27e792bd13", "version" : 0 } } 

{ "_id" : ObjectId("000000000000000000000002"), "chunkSize" : 261120, "length" : 232, "md5" : "42290309186cc5420acff293b92ae21d", "filename" : "/tmp/outputFs-02.tmp", "contentType" : null, "uploadDate" : ISODate("2015-04-13T13:50:48.259Z"), "aliases" : null, "metadata" : { "estado" : "FICHERO_ENVIADO_OK", "fechaEnvio" : ISODate("2015-04-13T13:50:48.259Z"), "dataDate" : "20141123", "inputOutputFs" : "output", "gridFileCompression" : "bzip2", "fileType" : "OUTPUT-TEST2", "filePath" : "/tmp/outputFs-02.tmp", "sourceParticipant" : "0100", "destinationParticipant" : "REE", "exportFileName" : "F1_0100_20141123_20150220.0", "processed" : "false", "fileMD5" : "4276e61a4b63d3d1d1b77e27e792bd13", "version" : 0 } } 



db.outputFs.chunks.find() 

{ "_id" : ObjectId("000000000000000000000001"), "files_id" : ObjectId("000000000000000000000001"), "n" : 0, "data" : { "$type" : 0, "$binary" : "QlpoOTFBWSZTWZSBQ/YABX5cAAAYQAH/+CAAMAFWA0NqptIb9UgAZ6qowAAFKSaJpGhk8ssmVlk7AAAALZtZZOf0vr859OqflcIs461Dm1skcSOpGpHMuu5HcsJG0j5I9PiR4kaRvvjWskfsVMkZVLxI3uRy/pGTqRj7VmMyTOBfUtb561rwkf0j09+Zbkd+cs1I77861xI7pypvfOt1v5DmR1I51nW7XGdaluRnGZjMzJMzOZGpHnrfGM56+/fnGPVVVVVqqpVVWxCSxCTSAEMkZI3IyqXuqXyRuR/i7kinChISkCh+wA==" } } 

{ "_id" : ObjectId("000000000000000000000002"), "files_id" : ObjectId("000000000000000000000002"), "n" : 0, "data" : { "$type" : 0, "$binary" : "QlpoOTFBWSZTWZSBQ/YABX5cAAAYQAH/+CAAMAFWA0NqptIb9UgAZ6qowAAFKSaJpGhk8ssmVlk7AAAALZtZZOf0vr859OqflcIs461Dm1skcSOpGpHMuu5HcsJG0j5I9PiR4kaRvvjWskfsVMkZVLxI3uRy/pGTqRj7VmMyTOBfUtb561rwkf0j09+Zbkd+cs1I77861xI7pypvfOt1v5DmR1I51nW7XGdaluRnGZjMzJMzOZGpHnrfGM56+/fnGPVVVVVqqpVVWxCSxCTSAEMkZI3IyqXuqXyRuR/i7kinChISkCh+wA==" } } 

Когда я пытаюсь получить его с помощью Spring Data или даже MongoChef (как клиентов, Java) в виде файла, я получаю следующее ошибка:

com.mongodb.BasicDBObject cannot be cast to [B 

коллекции были импортированы вручную, как они, не используя MongoChef или mongofiles, и я понятия не имею, где эта ошибка может исходить от.

+0

Вы можете получить их с помощью командной строки 'mongofiles'? – Thilo

+0

'mongofiles list' ничего не показывает –

+0

Как вы добавили тег java, чтобы вы могли использовать драйвер mongo java. Попробовали ли вы напрямую с помощью java-драйвера? –

ответ

1

Спецификация GridFS рассчитывает Binary поле data в коллекции chunks. Однако ваш outputFs.chunks не отвечает этим критериям.

data поле здесь не является типом данных Binary BSON но обычный документ, который, случается, есть два поля под названием $type и $data.

mongoimport создаст двоичное поле только для записей JSON в следующем формате. Обратите внимание, что порядок полей имеет значение для mongoimport.

{ 
    "$binary" : ... 
    "$type" : ... 
} 

Ваш пример имеет $type и $binary поля поменялись.

Обновите свой JSON-файл и снова импортируйте outputFs.chunks. mongoimport создаст действительные двоичные поля, и вы сможете работать с GridFS с помощью других инструментов MongoDB.