0

我有一个包含大量原始整数的 Mongo 文档。使用 Java MongoDB API,我可以直接存储 int[],例如:

DBCollection coll = test.getCollection("test");
int[] myInts = {3,4,5,56};
DBObject doc = new BasicDBObject("arr", myInts);
coll.insert(doc);

但是当我检索数据时,我会返回一个包含 Integer 对象的 BasicDBList:

DBCollection coll = test.getCollection("test");
DBObject obj = coll.findOne();
BasicDBList list =(BasicDBList)obj.get("arr");

有没有办法以我插入它的相同形式(int [])获取这些数据?因为数组将非常大,我不希望为每个数组元素创建一个 Integer 对象。

4

1 回答 1

0

一般来说 - 没有。你会得到一个列表。

您可以尝试将数组保存为二进制 blob,但随后您将失去查询该数组的能力,并且您将不得不对整数数组的字节进行编码/解码。

将整数值转换为 Integer 对象有一些开销,但该开销受限于 JVM 维护从 -128 到 127 的 Integer 值的缓存。(对于 oracle JVM,您可以使用 -XX:AutoBoxCacheMax 进行一些控制)。与 int 数组相比,(数组)列表本身的开销最小。

于 2013-10-18T02:34:49.627 回答