最近接触的东西比较杂,很痛苦,每个都只能了解到表面,但无法深究.MongoDB也是如此,现在只能突击学习一下了,笔记当然是不可少的.
首先说下mongoDB适用场景: 数据量大,写入操作频繁,数据价值较低 (如新浪微博的评论等数据) 这样的数据就不太适合使用redis了, redis的特点是快,但它是单线程的,所以当数据量大的时候,性能会大大降低,
特点: (1)面向集合存储,易于存储对象类型的数据 (2)模式自由 (3)支持动态查询 (4)支持完全索引,包含内部对象 (5)支持复制和故障恢复 (6)使用高效的二进制数据存储,包括大型对象(如视频等) (7)自动处理碎片,以支持云计算层次的扩展性 (8)支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++语言的驱动程 序,社区中也提供了对 Erlang 及.NET 等平台的驱动程序 (9) 文件存储格式为 BSON(一种 JSON 的扩展)
mongodb安装问题: https://blog.csdn.net/let_me_tell_you/article/details/81239328
常用命令: user 数据库名称 选择和创建数据库,如果数据库不存在则自动创建 db.集合名称.insert(data); 插入数据 db.集合名称.find() ; 查询所有,括号内可添加查询条件 db.集合名称.findOne(查询条件) 返回符合条件的第一条数据 db.集合名称.find().limit(num) num代表查询后返回结果的条数 db.集合名称.update(条件,修改后的数据) 修改文档,条件相当于查询条件, 举例: 将id为1的数据的username属性修改为yyy (这个$符号有时候打不出来不知为啥,所以就截图了)
db.集合名称.remove(条件); 删除文档 ,可加条件 db.集合名称.count() 统计数据条数,可加条件
值得一提的是模糊查询: mongodb模糊查询是通过正则表达式实现的, db.集合名称.find({username:/y/}) 查询集合中username包含y的文档 db.集合名称.find({username:/^y/}) 查询集合中username以y开头的文档
db.集合名称.find({age:{$gt:18}}) 查询集合中年龄大于18的文档 同理还有 $lt: 小于 $gte:大于等于 $lte: 小于等于 $ne: 不等于 $in:包含 $nin: 不包含 $and:和,相当于sql的and 连接多个条件 $or: 或 $inc: 自增
使用 依赖
mongodb 驱动依赖
测试代码: 好了 新手学习到这里了,后续在实际场景使用中遇到问题再进行补充.
----------------------------------------------更新-----------------------------------------------------
mongodb的实际应用: 项目中要求将部分数据从数据库改为存入mongodb中,需要删除原来的mybatis中的xml,通过mongo来替代
注入mongotemplate mongotemplate的各个操作: 增删改查就不多说了,主要说分组,排序,通过Aggregation实现,如下: 需要注意的是在Aggregation中必须将字段一一映射,否则是无法查询出相应字段的. mongoTemplate.aggregate(agg, “库名”, entity.class).getMappedResults(); //查询结果集