Bha*_*a S 2 java mongodb mongodb-java
我无法使用Java 3.4.2驱动程序从MongoDB中读取blob(二进制)记录。
BasicDBObject whereClause = new BasicDBObject();
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
obj.add(new BasicDBObject("blobcontentid", "20160601201035069394000000"));
whereClause.put("$and", obj);
MongoCursor<Document> cursor = contentcollection.find(whereClause).iterator();
while (cursor.hasNext()) {
Document object = cursor.next();
System.out.println(object.getString("blobcontentid"));
if (object.get("content") != null){
byte[] content = (byte []) object.get("content");
} else {
System.out.println("Content is empty");
}
}
Run Code Online (Sandbox Code Playgroud)
错误:java.lang.ClassCastException:org.bson.types.Binary无法转换为[B
在DB2中,相同的记录正在读取。byte [] content = aResult.getBytes(“ CONTENT”);
先感谢您!巴拉提
您可以get()对Document内置铸造使用上的方法来实现此目的。例如:
// Insert a binary data (byte array) into the database
Document document = new Document("blob", "This is a byte array blob".getBytes());
collection.insertOne(document);
// Find and print the inserted byte array as String
for (Document doc : collection.find()) {
Binary bin = doc.get("blob", org.bson.types.Binary.class);
System.out.println(new String(bin.getData()));
}
Run Code Online (Sandbox Code Playgroud)
它将打印This is a byte array blob出已插入数据库的内容并返回到控制台。
BinData由于插入操作,数据库将包含一个元素:
> db.collection.find()
{
"_id": ObjectId("5976e23911e6772c5d32c42d"),
"blob": BinData(0, "VGhpcyBpcyBhIGJ5dGUgYXJyYXkgYmxvYg==")
}
Run Code Online (Sandbox Code Playgroud)
请注意,由于BSON 16MB文档大小的限制,如果要插入较大的二进制数据块,则此方法可能不起作用。如果您需要插入超过16MB的二进制数据,我建议改用GridFS。
| 归档时间: |
|
| 查看次数: |
2643 次 |
| 最近记录: |