1. 程式人生 > >mongoDb簡介和整合spring boot

mongoDb簡介和整合spring boot

MongoDb

MongoDb是一種非關係型資料庫,是現在非常火熱的noSQL。也被稱為文件性資料庫。(可存放json,xml等格式)
mongodb與mysql命令對比 傳統的關係資料庫一般由資料庫(database)、表(table)、記錄(record)三個層次概念組成,
MongoDB是由資料庫(database)、集合(collection)、文件物件(document)三個層次組成。(儲存xml,json等)
MongoDB對於關係型資料庫裡的表,但是集合中沒有列、行和關係概念,這體現了模式自由的特點。
一條MongoDB就是一個類似json資料結構。

特點:
1.儲存方式:虛擬記憶體+持久化。(資料儲存在磁碟,但是充分利用了快取,常用的資料放於記憶體)
2.不使用固定的sql進行操作。(有固定語法)


MongoDb的優點

1.高速。
2.支援json。(可存放複雜資料)
3.可擴充套件分片叢集。

MongoDb的缺點

1.事務關係支援薄弱。
2.穩定性不足。
3.運維難。
4.不支援對錶關聯查詢。
5.在指定id之後插入會比較慢。

使用場景

1.對大量無固定格式的資料儲存,如日誌等。(充分的使用了記憶體)
2.需要高效能。
3.擴充套件叢集。


對MongoDb增刪查改

首先需要安裝,可以按照這位老哥的來安裝 https://www.cnblogs.com/RushPasser/p/b060ea88677ab73fce01300d19676158.html。親試賊專業。


1.進入C:\Program Files\MongoDB\Server\3.4\bin,雙擊mongo.exe。

show dbs  --檢視資料庫,假設我們有一個叫test的資料庫
use test 使用test資料庫

插入

db.message.save({'name':'xiaobao','age':27,'class':'1-1'})  --插入message的資訊。裡面為json。
db.message.save({'name':'xiaobao2','age':28,'class':'2-1'})
db.message.save({'name':'xiaobao3','age':29,'class':'3-1'})

查詢

db.message.find()    --查詢message
db.message.find().pretty()  --格式化在查詢
db.message.find()  .limit(1)  --查詢一條
db.message.find({"age":{"$gte":10}}) --查詢age大於10的資料
db.message.find({"age":{"$lte":10}}) --查詢age小於10的資料
db.message.find().sort({"age":1})  --正排序
db.message.find().sort({"age":1})  --負排序
db.message.count() --查詢條數

修改

db.message.update({"name":"xiaobao"},{$set:{"name":"xiaowang"}}) 
db.message.update({"name":"xiaowang"},{"name":"laoli"})  --修改name 為laoli 其餘值刪除
db.message.update({"name":"xiaobao2"},{$set:{"name":"xiaowang"}},{upsert:true})   --如果沒有 增加一條
db.message.update({"name":"xiaowang"},{$set:{"name":"xiaowang"}},{multi:true})    --修改所有資料


刪除

db.message.remove()  --刪除所有
db.message.remove({'class':'1-1'}) --刪除class = 1-1的那條


spring boot整合mongodb

然後在application.properties加入mongoDb連結。

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

然後使用MongoTemplate 來操作資料庫,MongoTemplate 和常用的RedisTemplate差不多,都是封裝了mongoDb方法的客戶端。

    @Autowired
	private MongoTemplate mongotemplate;
//增加
    @RequestMapping(path = "/savemongo", method = RequestMethod.POST)
	@ResponseBody
	public void savecCity(@RequestBody City city) {
		mongotemplate.save(city);//通過一個類型別向資料庫中插入json
	}
//查詢
	@RequestMapping("/selmongo")
	@ResponseBody
	public City select(@RequestParam int id) {
		Query query = new Query(Criteria.where("id").is(id));  //查詢id為傳入引數
		City user = mongotemplate.findOne(query, City.class);
		return user;
	}
//刪除
	@RequestMapping("/delmogo")
	@ResponseBody
	public void del(@RequestParam int id) {
		Query query = new Query(Criteria.where("id").is(id));  //個人理解此行為查詢條件,然後在下面查找出在刪除。
		mongotemplate.remove(query, City.class);
	}
//修改
	@RequestMapping(path = "/updamogo", method = RequestMethod.POST)
	@ResponseBody
	public void updateMongo(@RequestBody City city) {
		Query query = new Query(Criteria.where("id").is(city.getId()));
		Update update = new Update().set("provinceId", city.getProvinceId()).set("cityName", city.getCityName());
		mongotemplate.updateFirst(query, update, City.class);
	}


參考:https://www.cnblogs.com/fengnovo/p/6220724.html
https://www.cnblogs.com/ityouknow/p/6828919.html