file
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

MongoDb简介

  • MongoDb是一种非关系型数据库,是现在非常火热的noSQL。也被称为文档性数据库。(可存放json,xml等格式)
  • mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,
  • MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。(存储xml,json等)
  • MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
  • 一条MongoDB就是一个类似json数据结构。

特点:

  • 存储方式:虚拟内存+持久化。(数据存储在磁盘,但是充分利用了缓存,常用的数据放于内存)
  • 不使用固定的sql进行操作。(有固定语法)

1.MongoDb的优点

  • 高速。
  • 支持json。(可存放复杂数据)
  • 可扩展分片集群。

2.MongoDb的缺点

  • 事务关系支持薄弱。
  • 稳定性不足。
  • 运维难。
  • 不支持对表关联查询。
  • 在指定id之后插入会比较慢。

3.使用场景

  • 对大量无固定格式的数据存储,如日志等。(充分的使用了内存)
  • 需要高性能。
  • 扩展集群。

MongoDb的curd语法

安装

首先需要安装,可以按照这位老哥的来安装

操作命令

进入C:\Program Files\MongoDB\Server\3.4\bin,双击mongo.exe。

  1. show dbs --查看数据库,假设我们有一个叫test的数据库
  2. use test 使用test数据库

1.插入语法

  1. db.message.save({'name':'xiaobao','age':27,'class':'1-1'}) --插入message的信息。里面为json
  2. db.message.save({'name':'xiaobao2','age':28,'class':'2-1'})
  3. db.message.save({'name':'xiaobao3','age':29,'class':'3-1'})

2.查询语法

  1. db.message.find() --查询message
  2. db.message.find().pretty() --格式化在查询
  3. db.message.find() .limit(1) --查询一条
  4. db.message.find({"age":{"$gte":10}}) --查询age大于10的数据
  5. db.message.find({"age":{"$lte":10}}) --查询age小于10的数据
  6. db.message.find().sort({"age":1}) --正排序
  7. db.message.find().sort({"age":1}) --负排序
  8. db.message.count() --查询条数

3.修改语法

  1. db.message.update({"name":"xiaobao"},{$set:{"name":"xiaowang"}})
  2. db.message.update({"name":"xiaowang"},{"name":"laoli"}) --修改name laoli 其余值删除
  3. db.message.update({"name":"xiaobao2"},{$set:{"name":"xiaowang"}},{upsert:true}) --如果没有 增加一条
  4. db.message.update({"name":"xiaowang"},{$set:{"name":"xiaowang"}},{multi:true}) --修改所有数据

4.删除语法

  1. db.message.remove() --删除所有
  2. db.message.remove({'class':'1-1'}) --删除class = 1-1的那条

整合spring boot

在application.properties加入mongoDb链接。

  1. spring.data.mongodb.uri=mongodb://192.168.2.81:27017/test

然后使用MongoTemplate 来操作数据库,MongoTemplate 和常用的RedisTemplate差不多,都是封装了mongoDb方法的客户端。

  1. @Autowired
  2. private MongoTemplate mongotemplate;
  3. //增加
  4. @RequestMapping(path = "/savemongo", method = RequestMethod.POST)
  5. @ResponseBody
  6. public void savecCity(@RequestBody City city) {
  7. mongotemplate.save(city);//通过一个类类型向数据库中插入json
  8. }
  9. //查询
  10. @RequestMapping("/selmongo")
  11. @ResponseBody
  12. public City select(@RequestParam int id) {
  13. Query query = new Query(Criteria.where("id").is(id)); //查询id为传入参数
  14. City user = mongotemplate.findOne(query, City.class);
  15. return user;
  16. }
  17. //删除
  18. @RequestMapping("/delmogo")
  19. @ResponseBody
  20. public void del(@RequestParam int id) {
  21. Query query = new Query(Criteria.where("id").is(id)); //个人理解此行为查询条件,然后在下面查找出在删除。
  22. mongotemplate.remove(query, City.class);
  23. }
  24. //修改
  25. @RequestMapping(path = "/updamogo", method = RequestMethod.POST)
  26. @ResponseBody
  27. public void updateMongo(@RequestBody City city) {
  28. Query query = new Query(Criteria.where("id").is(city.getId()));
  29. Update update = new Update().set("provinceId", city.getProvinceId()).set("cityName", city.getCityName());
  30. mongotemplate.updateFirst(query, update, City.class);
  31. }

本文转自:
https://blog.51cto.com/u_15403620/4756019

更多相关文章

  1. vue 基础语法及购物车小案例
  2. Android(安卓)中数据库查询方法 query() 中的 select
  3. android分页查询获取系统联系人信息
  4. Android客户端与服务端交互-客户端GET方式登录和客户端POST方式
  5. Android查询短信数据库
  6. Android查询短信数据库
  7. [Android] Android下实现电话号码归属地的查询
  8. android的多媒体数据库
  9. Android(安卓)App开发基础篇—四大组件之ContentProvider

随机推荐

  1. 基于Android6.0的RIL底层模块分析
  2. 在Webview上加载脱机更新页面
  3. 如何使用java RESTful Web服务将通知推送
  4. Java项目无法通过BufferedWriter向服务器
  5. Android无法加载第三方so的解决方法
  6. Android 打包VersionCode自增、APK文件名
  7. Android6.0的phone应用源码分析(5)——RIL
  8. 由Android架构图所想到的Android开发学习
  9. 在两台设备上播放一首音乐
  10. [置顶] Android系统的样式style