簡單的mongodb的學習使用,勿噴,有問題點出

鵬鳥308發表於2020-10-12

什麼是MongoDB ?

MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統,無事務,資料安全回滾無法保證。

mongoDB的資料(文件)沒有規範現在,可以隨便插入

在高負載的情況下,新增更多的節點,可以保證伺服器效能。

MongoDB 旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。

MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件,陣列及文件陣列。

mongodb 儲存的是json資料(bson:二進位制json)

mongodb的結構:

mongodb服務(資料庫(database):倉庫(集合(collection):陣列存放(文件(document):最小單位,我們就是操作文件)))

在mongodb中我們不用自己手動建立資料庫和集合,當我們建立文件時,如果文件所在集合和資料庫不存在,它會自動建立集合和資料庫。

mongodb加入資料時會自己建立一個唯一標識id

安裝mongodb

http://dl.mongodb.org/dl/win32/x86_64 網站下載

解壓可以直接使用

先建立資料庫檔案的存放位置

在MongoDB下建立data,在data下再建立db:D:\software\MongoDB\data\db

因為啟動mongodb服務之前需要必須建立資料庫檔案的存放資料夾,否則命令不會自動建立,而且不能啟動成功。

啟動MongoDB服務

1.開啟cmd命令列

2.進入D:\software\MongoDB\bin目錄(注意:先輸入d:進入d盤,然後輸入cd D:\software\MongoDB\bin)

3.輸入如下的命令啟動mongodb服務:mongod --dbpath D:\software\MongoDB\data\db

img

在瀏覽器輸入http://localhost:27017 (27017是mongodb的埠號)檢視,若顯示

img

則表示,連線成功。如果不成功,可以檢視埠是否被佔用。

但是在本地windows“服務”中,是沒有配置上mongodb 服務的,可以開啟“服務”看下

img

配置本地windows mongodb 服務

這樣可設定為 開機自啟動,可直接手動啟動關閉,可通過命令列net start MongoDB 啟動。該配置會大大方便。

1.先在data檔案下建立一個新資料夾log(用來存放日誌檔案)

img

2.在Mongodb新建配置檔案mongo.config

img

可能很多人都不會建立.config配置檔案。那給大家介紹下簡單的方法:

先建立一個mongo.txt檔案,再開啟,點選”另存為“,將底下的檔案型別更改為”全部型別“,並更改檔名稱為mongo.config。

這樣就可以建立一個config的配置檔案了。

3.用記事本開啟*mongo.config* ,並輸入:

dbpath=D:\software\MongoDB\data\db

logpath=D:\software\MongoDB\data\log\mongo.log

4.用管理員身份開啟cmd:

可能還有很多人不會管理員身份開啟cmd。這也介紹下:

在下圖路徑下找到cmd 的執行檔案

img

然後右鍵,以管理員身份執行。開啟後發現在頂端比普通開啟的多了”管理員“三個字

img

5.配置windows服務:

cmd先跳轉到 D:\software\MongoDB\bin目錄下。

輸入:mongod --config “D:\software\Mongodb\mongo.config” --install --serviceName “MongoDB”

即根據剛建立的mongo.config配置檔案安裝服務,名稱為MongoDB。

img

完成後,再次檢視本地的服務。

img

如果成功的話,會發現本地服務多了”MongoDB"服務。

這就大功告成了。哈哈~~~

可以通過:“開機自啟動,可直接手動啟動關閉,命令列net start MongoDB 啟動”。

開啟後,可以正常連線了。可以用pycharm等IDE連線,

配置環境變數

把檔案路徑 E:\mongodb64\mongodb\bin 新增到系統變數中 path中(新增了環境變數就可以控制檯中使用命令使用了)

MongoRepository有以下方法

count()統計總數
count(Example< S > example)條件統計總數
delete(T entities)通過物件資訊刪除某條資料
deleteById(ID id)通過id刪除某條資料
deleteALL(Iterable<? extends T> entities)批量刪除某條資料
deleteAll() 清空表中所有的資料
existsById(ID id) 判斷資料是否存在
exists(Example< T > example) 判斷某特定資料是否存在
findAll() 獲取表中所有的資料
findAll(Sort sort) 獲取表中所有的資料,按照某特定欄位排序
findAll(Pageable pageAble) 獲取表中所有的資料,分頁查詢
findAll(Example< T > example) 條件查詢
findAll(Iterable ids) 條件查詢
findAll(Example< T > example,Pageable pageable) 條件分頁查詢
findAll(Example< T > example,Sort sort) 條件查詢排序
findOneById(ID id) 通過id查詢一條資料
findOne(Example example) 通過條件查詢一條資料
insert(S entities) 插入一條資料
insert(Iterable< T > entities) 插入多條資料
save(S entities) 儲存一條資料
saveAll(Iterable< T > entities)
save(Iterable< T > iterable) 加入多條資料

MongOdb基本命令:

ObjectId() mongodb自己建立的唯一標識id的命令

可以通過 -id 來自己設定唯一id(不推薦)

​ 示例:db.stus.insert({_id:18,name:“chenpeng”,age:18,gender:“男”})

資料庫操作

​ show databases: 顯示當前全部資料庫

​ use 資料庫名稱: 進入指定的資料庫

​ db: 顯示當前所在位置資料庫名稱

​ show collections 顯示資料庫中的所有集合

​ db.collection.drop() 刪除本集合

​ db.dropDatabase() 刪除本資料庫

資料庫的crud操作:

新增:

​ 插入一個文 檔:db.集合名稱.insert(物件json)

​ 示例:db.stus.insert({name:“chenpeng”,age:18,gender:“男”})

​ 多條插入:db.集合名稱.insert([{物件json},{物件json},{物件json}])

​ 示例:db.stus.insert([{name:“chenpeng”,age:18,gender:“男”},{name:“chenpeng”,age:18,gender:“男”}, {name:“chenpeng”,age:18,gender:“男”}])

​ 插入一條:db.集合名稱.insertOne()

​ 插入多個(預設陣列):db.集合名稱.insertMany()

查詢

​ 條件標籤:

​ 如果你需要以易讀的方式來讀取資料,可以使用 pretty() 方法 db.col.find().pretty()

​ MongoDB AND 條件 db.col.find({key1:value1, key2:value2}).pretty()

​ MongoDB 與 RDBMS Where 語句比較

操作格式範例RDBMS中的類似語句
等於{:}db.col.find({"by":"菜鳥教程"}).pretty()where by = '菜鳥教程'
小於{:{$lt:}}db.col.find({"likes":{$lt:50}}).pretty()where likes < 50
小於或等於{:{$lte:}}db.col.find({"likes":{$lte:50}}).pretty()where likes <= 50
大於{:{$gt:}}db.col.find({"likes":{$gt:50}}).pretty()where likes > 50
大於或等於{:{$gte:}}db.col.find({"likes":{$gte:50}}).pretty()where likes >= 50
不等於{:{$ne:}}db.col.find({"likes":{$ne:50}}).pretty()where likes != 50

​ MongoDB AND 條件 db.col.find({key1:value1, key2:value2}).pretty()

​ MongoDB OR 條件 db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()

​ AND 和 OR 聯合使用 db.col.find({“likes”: {$gt:50}, $or: [{“by”: “菜鳥教程”},{“title”: “MongoDB 教程”}]}).pretty()

查詢當前集合的全部文件: db.集合名稱.find() 查詢出全部符合條件的文件

指定查詢指定欄位:db.inventory.find( { type: food}, { item: 1, qty: 1,age:0} ) 只查詢item,qty欄位,不顯示age欄位

​ 查詢語句在find()裡面加

​ 示例:db.stus.find({age:28})

​ db.stus.find({age:28,name:“陳鵬”})

​ db.集合名稱.findOne() 查詢符合條件的第一條

​ 示例:db.stus.finOne({age:28})

​ db.集合名稱.find().count() 查詢出資料的條數 .count()

​ 示例:db.stus.finOne({age:28}).count()

修改

​ db.集合名稱.update(查詢條件,修改內容) 修改文件 (要是修改了沒有的屬性會直接自動新增那個屬性)(預設修改的是第一個符合的文件資料)

​ 預設是全部替換文件的全部屬性

​ 示例:db.stus.update({name:“陳鵬”},{age:28}) 直接覆蓋name為陳鵬的文件並且賦值上age為28(只有一個age屬性了)

​ $set 指定修改某個屬性

​ 示例:db.stus.update({name:陳鵬},{$set:{age:28,sex:“男”}}) 修改了name為陳鵬的age屬性為28和sex屬性為男

​ $unset 指點刪除某個屬性

​ 示例:db.stus.update({name:陳鵬},{$unset:{age:隨便寫}}) 刪除了name為陳鵬的age屬性

​ db.集合名稱.updateMany(查詢條件,修改內容) 修改全部符合條件的文件

​ 示例:db.stus.updateMany({name:陳鵬},{$set:{age:28,sex:“男”}}) 修改了全部name為陳鵬的age屬性為28和sex屬性為男

​ db.集合名稱.updateOne(查詢條件,修改內容) 修改第一個符合條件的文件

​ 示例:db.stus.updateOne({name:陳鵬},{$set:{age:28,sex:“男”}}) 修改了第一條name為陳鵬的age屬性為28和sex屬性為男

​ db.集合名稱.replaceOne(查詢條件,修改內容) 替換第一個符合條件的文件

​ 示例:db.stus.replaceOne({name:陳鵬},{$set:{age:28,sex:“男”}}) 替換了第一條name為陳鵬的文件,文件只有age屬性為28和sex屬性為男

刪除

​ db.集合名稱.remove(刪除條件) 刪除符合條件的文件(預設刪除全部符合條件的文件,刪除必須傳引數)

​ 示例:db.stus.remove({age:20}) 刪除了全部age為20的文件

​ db.集合名稱.removeMany(刪除條件) 刪除全部符合的

​ db.集合名稱.removeOne(刪除條件) 刪除第一條符合的

Mongodb的關係(一對一,一對多,多對多)

同過list陣列寫多個資料在裡面做為屬性,實現多對多和一對多

在 MongoDB 中使用 sort() 方法對資料進行排序

sort() 方法可以通過引數指定排序的欄位,並使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用於降序排列。

db.COLLECTION_NAME.find().sort({欄位名:1})

相關文章