簡單的mongodb的學習使用,勿噴,有問題點出
什麼是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
在瀏覽器輸入http://localhost:27017 (27017是mongodb的埠號)檢視,若顯示
則表示,連線成功。如果不成功,可以檢視埠是否被佔用。
但是在本地windows“服務”中,是沒有配置上mongodb 服務的,可以開啟“服務”看下
配置本地windows mongodb 服務
這樣可設定為 開機自啟動,可直接手動啟動關閉,可通過命令列net start MongoDB 啟動。該配置會大大方便。
1.先在data檔案下建立一個新資料夾log(用來存放日誌檔案)
2.在Mongodb新建配置檔案mongo.config
可能很多人都不會建立.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 的執行檔案
然後右鍵,以管理員身份執行。開啟後發現在頂端比普通開啟的多了”管理員“三個字
5.配置windows服務:
cmd先跳轉到 D:\software\MongoDB\bin目錄下。
輸入:mongod --config “D:\software\Mongodb\mongo.config” --install --serviceName “MongoDB”
即根據剛建立的mongo.config配置檔案安裝服務,名稱為MongoDB。
完成後,再次檢視本地的服務。
如果成功的話,會發現本地服務多了”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})
相關文章
- 使用簡單的Python連線訪問MongoDBPythonMongoDB
- MongoDB最簡單的入門教程之二 使用nodejs訪問MongoDBMongoDBNodeJS
- 小白的學習記錄——Redis的簡單使用Redis
- ES6最簡單的方式訪問MongoDBMongoDB
- iOS FTPManager的簡單使用及常見問題iOSFTP
- 我的mysql有點問題MySql
- 簡單問題:JAVA物件的淺複製,有一個疑問!Java物件
- React Native學習之 ListView 的簡單使用React NativeView
- 學習WebSocket(一):Spring WebSocket的簡單使用WebSpring
- shell學習—關於grep的簡單使用(轉)
- MongoDB索引的簡單理解MongoDB索引
- LVM的簡單學習LVM
- .Net Core中簡單使用MongoDBMongoDB
- 【MongoDB學習筆記】MongoDB索引那點事MongoDB筆記索引
- Git 簡單使用學習筆記Git筆記
- 新版的Chrome斷點有問題Chrome斷點
- 學習方向的問題
- window下mongodb的簡單配置MongoDB
- jsf取值的簡單問題JS
- 零基礎怎麼學習UI設計?有哪些簡單的學習方法?UI
- MongoDB最簡單的入門教程之五-通過Restful API訪問MongoDBMongoDBRESTAPI
- 簡單的SQL語句學習SQL
- jni安全利用的簡單學習
- 關於學習效率問題,一點點心得
- 使用PHP驅動的MongoDB的單點查詢效能測試PHPMongoDB
- css的過濾器的簡單學習CSS過濾器
- SQL Server中的鎖的簡單學習SQLServer
- MongoDB的學習總結MongoDB
- MongoDB的學習筆記MongoDB筆記
- JERSEY學習遇到的問題
- mongodb和hbase的簡單比較MongoDB
- 簡單的素數問題(C++)C++
- 用簡單的方法解決問題
- MongoDB 簡單上手MongoDB
- 使用Promise解決多層非同步呼叫的簡單學習Promise非同步
- Java學習筆記—開源框架Netty的簡單使用Java筆記框架Netty
- 零基礎學習UI設計有哪些簡單有效的方法UI
- IW聊聊使用RedisTemplat實現簡單的分散式鎖的問題vawRedis分散式