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