结果读取
默认 preRead=true 时,find / findOne 展开文档字段,供实体映射使用。未指定投影时,还提供 _ID、_JSON 原始文档列。
按投影读取
指定投影时,只返回投影后的字段,不添加 _ID、_JSON。包含型投影按声明顺序排列列;MongoDB 默认保留 _id,只读取业务字段时要显式排除:
String name = jdbc.queryForString(
"test.user_info.find({uid: ?}, {_id: 0, name: 1})",
new Object[] { "1001" });
按名称读取字段
未指定投影时,按列名读取业务字段:
List<String> names = jdbc.queryForList(
"test.user_info.find({uid: ?})",
new Object[] { "1001" },
(rs, rowNum) -> rs.getString("name"));
关闭预读(preRead=false)后,改为读取原始文档,不再依赖展开列:
List<String> documents = jdbc.queryForList(
"test.user_info.find({}).limit(10)",
(rs, rowNum) -> rs.getString("_JSON"));
aggregate 未指定输出投影时,从 _JSON 读取文档。需要将分组结果或计算字段映射到属性时,在管线末尾增加 $project;默认 preRead=true 会将投影字段展开为结果列。_ID 只提取 ObjectId;数字或字符串 _id 从文档字段读取。
限制读取量
find 指定 limit,aggregate 使用 $limit。关闭 preRead 不表示 ResultSet.next() 会逐页向服务端取数。
JSON 到对象的映射见JSON 字段映射。