引子
使用mongodb也有几个月时间了,从一开始茫然无知的用一点差一点,到后来抽出时间全面的去学习mongodb的基础实用知识,再到回过头来修改项目使用不当的地方。这么一个过程下来多多少少会有一些感触。
基础的知识我这里就不介绍了,大家可以去下载mongodb权威指南(中文版)看一看,里面知识点都很全面。下面会写一点自己最近在使用的修改器知识。其它方面的陆陆续续可能会写一些进来。我工作中用的是spring mongodb,所以接下来的讲解中,原生mongodb的知识我只整理一些mongodb权威指南的内容,最后引入一些mongodb在spring中的用法。
$set
“$set”用来指定一个键的值
1、如果键不存在,则创建它。这对更新模式或者增加用户定义键来说非常方便:
例如,用户资料存储在下面这样的文档里:
2、如果键存在则修改
3、修改数据类型
4、修改内嵌文档
spring 中的用法:
修改UserInfo中_id为openId的两个字段。其中不带引号的openId、nickName、set为String变量
Query query = Query.query(Criteria.where("_id").is(openId));
Update update = new Update().update("nickName", nickName).update("sex", sex);
mongoTemplate.updateFirst(query, update, UserInfo.class);
update方法在spring中的源码如下:
public static Update update(String key, Object value){
return (new Update()).set(key, value);
}
public Update set(String key, Object value){
addMultiFieldOperation("$set", key, value);
return this;
}
unset
1、用来将键完全删除
spring 中的用法:
用法及在unset源码:
Update update = new Update().unset("nickName");
public Update unset(String key){
addMultiFieldOperation("$unset", key, Integer.valueOf(1));
return this;
}
$inc
用于,增加和减少:
1、键不存在时创建一个键
2、增加已有键的值
对于分析数据、因果关系、投票或者其他变化数值的地方,使用这个非常方便。
spring 中的用法:
Update update = new Update().inc("count", 1);
总结
在后面我会继续再写一些spring mongodb的东西。在使用mongodb的过程中,我是一直在不停的修改、重构代码,没办法应该一开始的时候很多地方写的不大好,到后面发现有更好的方法的时候只能重新去修改方法,或者一些表结构。
在这里分享一点自己的经验(只针对新人,老人可以忽略不看)。首先一定要找一份好的基础文档(如mongodb权威指南)过一遍。让自己知道都有哪些方法,用的时候在基础文档总找到合理的方法,一般都会有对应的spring mongodb方法。先对基础知识有一个全面的理解可以减少很多的犯错。至于创建集合的数据结构这方面,mongodb有专门讲创建集合的资料,看几遍。如果有可能多找懂的人请教一下。我由于条件限制,身边资源不多,项目初期可以算是不停的在改动,知道现在还在做一些优化...
不可否认的,在这个过程中我也收到了很多人的帮助,感谢在这个过程中信任和帮助过我的人。