我无法从MongoDB读取blob(二进制)记录,使用的是Java 3.4.2驱动程序。
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");
}
}
错误:java.lang.ClassCastException:org.bson.types.Binary无法强制转换为[B
同样的记录我在DB2中读到这样的记录。 byte [] content = aResult.getBytes(“CONTENT”);
提前谢谢! Bharathi
答案 0 :(得分:4)
您可以使用get()
method on a Document
with built-in casting来实现此目的。例如:
<?php
$sql = "SELECT * FROM shape ";
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$id = $row['id'];
$is_success = $row['is_success'];
if ($is_success == 1)
{
echo "<div id='"id_.$id."' style='background:green;width: 35%; height: 14%; '> div1 </div>";
}else {
echo "<div id='"id_.$id."' style='background:red; width: 35%; height: 14%;'> div1 </div>";
}
}
}
?>
会将插入数据库的// 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()));
}
打印回控制台。
作为插入操作的结果,数据库将包含This is a byte array blob
元素:
BinData
请注意,如果由于BSON 16MB document size limitation而插入大量二进制数据,则此方法可能无效。如果您需要插入超过16MB的二进制数据,我建议改为使用GridFS。