日期:2014-05-16  浏览次数:20489 次

java使用mongodb问题集

1.js和java语言差异性:

问题:

由于mongo是 一个js引擎,而很多目前应用采用的是java开发,由于js并非强语言类型,导致写入的json中如果包含数字时就会出现问题。

js认为数字是number类型,换言之,js的number类型对应的强类型语言的float,导致如果写入一个数据,用java转换为整形时会失败。

解决:

禁止使用js更新mongodb,sa在使用时只允许查询,不允许修改和添加

?

2.查询mongodb复制集没有分布读压力:

问题:

mongodb replicate sets架构,设置认证,开启slaveOk(),所有的读并没有分配到对应的secondary

解决:

由于mongodb自由在运行时设置的slaveOk()才有效,退后后就得重新设置。

因此在java代码中需要明确说明是否使用从库读,代码如下:

?

?

3.maxBsonObjectSize

在应用开发时,我们往往可能设置进文档(document)的大小不一,但是mongodb服务器端设置了文档大小,对于早期版本是4M,对于后来设置为16M。

而驱动默认为4M,如果从服务器中获取过来数据,那么采用服务器端的数据。

java驱动获取最大bson数据代码如下:


获取的maxBsonObjectSize的数据,只要修改服务器端的这个数据即可。

具体设置如下:

?

?

?

------ author: madding.lip
date: 2012.02.09

?