1 场景
spring集成mongo后,可以使用mongoTemplate进行mongo操作。
1.1 当前问题
mongoTemplate写入或者更新数据库时,操作对象可以是Java bean实体类也可以是Map对象。
T insert(T objectToSave);
T insert(T objectToSave, String collectionName);
例子如下:
使用map作为存储对象
Map map=new HashMap<>();
map.put("userName","张三");
//年龄为字符串:18岁
map.put("age","18岁");
mongoTemplate.insert(map,"t_user_info");
Map map1=new HashMap<>();
map1.put("userName","张三");
//年龄为数字:18
map1.put("age",18);
mongoTemplate.insert(map1,"t_user_info");
使用java对象作为存储对象
@Data
public class UserInfo{
private String userName;
private Integer age;
}
UserInfo userInfo=new UserInfo();
userInfo.setUserName("张三");
//年龄为数字:18
userInfo.setAge(18);
mongoTemplate.insert(userInfo,"t_user_info");
因为mongo中,同一个表中,同一个字段,不同数据的字段类型可以不一样。即如上示例,使用map作为存储对象,不同的记录,字段age类型,既可以是字符类型“18岁”,也可以是数字类型18,数据库中数据格式如下:
/* 1 */
{
"_id" : ObjectId("5f8107c5f34b265ecada41ff"),
"userName" : "张三",
"age" : "18岁"
}
/* 2 */
{
"_id" : ObjectId("5f8107c5f34b265ecada4200"),
"userName" : "张三",
"age" : 18
}
如只使用java中的bean对象作为存储对象,则同一个表中所有的数据的数据类型均一致,如下:
/* 1 */
{
"_id" : ObjectId("5f8107c5f34b265ecada4211"),
"userName" : "张三",
"age" : 18
}
1.2 选型
java中使用map和