elasticsearch入門系列">elasticsearch入門系列
760
2022-05-29
文章目錄
第一章MongoDB簡介
第二章MongoDB安裝
第三章MongoDB基本操作
第一章MongoDB簡介
MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。
MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。
MongoDB 官網地址:https://www.mongodb.com/
MongoDB 官方英文文檔:https://docs.mongodb.com/manual/
MongoDB 各平臺-:https://www.mongodb.com/download-center#community
第二章MongoDB安裝
###2.1 關閉SELINUX
vi /etc/selinux/config
1
對配置文件進行修改,然后按ESC鍵,:wq保存退出
#SELINUX=enforcing #SELINUXTYPE=targeted SELINUX=disabled #增加
1
2
3
4
5
:wq! #保存退出
###2.2 配置防火墻
vi /etc/sysconfig/iptables
1
可以看到配置文件,然后按I鍵,insert如下數據
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
1
然后按ESC鍵,:wq保存退出,配置文件代碼如:
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
:wq保存退出
###2.3 下載安裝Mongodb
cd進入/usr/local/src
cd /usr/local/src
1
wget下載
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz
1
tar解壓
tar zxvf mongodb-linux-x86_64-2.6.0.tgz
1
將解壓文件移動到安裝目錄
mv mongodb-linux-x86_64-2.6.0 /usr/local/mongodb
1
創建mongodb存放路徑
mkdir -p /usr/local/mongodb/data/
1
創建mongodb日志文件存放文件
mkdir /usr/local/mongodb/logs/mongodb.log
1
###2.4 啟動mongodb
/usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log --logappend&
1
檢查
netstat -lanp | grep "27017"
1
進入mongodb數據庫控制臺
./mongo
1
設置mongodb全局
添加環境變量
vi /etc/profile
1
同樣使用VI編輯器,加入如下配置
export PATH=$PATH:/usr/local/mongodb/bin
1
按ESC,然后:wq保存退出
使配置文件立即生效
source /etc/profile
1
然后就可以全局使用mongodb命令了
進入mongodb控制臺
mongo #進入MongoDB控制臺 show dbs #查看默認數據庫 use admin #切換到admin數據庫 exit #退出MongoDB控制臺
1
2
3
4
5
6
7
第三章MongoDB基本操作
###3.1MongoDB連接
MongoDB連接,使用“username:password@hostname/dbname’”的形式進行連接。
連接本地數據庫服務器,端口是默認的。
mongodb://localhost
1
###3.2創建數據庫
MongoDB創建數據庫語法
use DATABASE_NAME
1
demo:創建test數據庫
use test
1
如果沒有數據庫,就創建數據庫,否就連接到指定數據庫
查看所有的數據庫,使用
show dbs
1
不過這時我們使用show dbs的話,還是看不到我們創建的數據庫,其實是需要我們向數據庫里添加數據才可以看得到的
demo:向test數據庫里插入一行數據
db.test.insert({"name":"test"})
1
###3.3創建數據庫
MongoDB刪除數據庫語法
db.dropDatabase()
1
不過一般要先使用use連接數據庫,然后再刪除指導數據庫
demo:刪除test數據庫
連接test數據庫
use test
1
刪除test數據庫
db.dropDatabase()
1
刪除集合
demo:刪除test數據庫的coll集合
> use test switched to db runoob > show tables coll > db.coll.drop() true > show tables >
1
2
3
4
5
6
7
8
###3.4插入文檔
MongoDB插入文檔語法大致如
db.COLLECTION_NAME.insert(document)
1
demo:向test數據庫的col集合中插入文檔
方法一
>use test >db.col.insert({title: 'MongoDB', description: 'MongoDB NOSQL', by: 'test', url: 'https:', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
1
2
3
4
5
6
7
8
查看已經寫入數據的col集合
db.col.find()
1
方法二
定義一個document對象
document=({title: 'MongoDB', description: 'MongoDB NOSQL', by: 'test', url: 'https:', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 });
1
2
3
4
5
6
7
執行,將定義好的document對象寫入數據
db.col.insert(document)
1
###3.5更新文檔
更新文檔操作語法大概如:
db.collection.update(
1
2
3
4
5
6
7
8
9
參數意義:
query : update的查詢條件,類似sql update查詢內where后面的。
update : update的對象和一些更新的操作符(如 , , ,inc…)等,也可以理解為sql update查詢內set后面的
upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
writeConcern :可選,拋出異常的級別。
demo:更新test數據庫的文檔
使用test數據庫
use test
1
更新文檔操作
db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}})
1
然后查看文檔是否更新
db.col.find()
1
修改多條相同的文檔
上訴情況是修改一條文檔的,若修改多條相同的文檔,則需要設置 multi 參數為 true。
db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}},{multi:true})
1
save()方法
語法大概如:
db.collection.save(
1
2
3
4
5
6
參數意義
document : 文檔數據。
writeConcern :可選,拋出異常的級別。
demo:替換了 _id 為 56064f89ade2f21f36b03136 的文檔數據
db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description": 'MongoDB NOSQL', "by": 'test', "url": 'https:', "tags": ['mongodb', 'database', 'NoSQL'], "likes": 100 })
1
2
3
4
5
6
7
8
9
只更新第一條記錄: db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 全部更新: db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 只添加第一條: db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 全部添加加進去: db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全部更新: db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true ); 只更新第一條記錄: db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
1
2
3
4
5
6
7
8
9
10
11
12
###3.6刪除文檔
MongoDB刪除文檔操作為
db.collection.remove(
1
2
3
4
MongoDB2.6以后版本的操作為
db.collection.remove(
1
2
3
4
5
6
7
query :(可選)刪除的文檔的條件。
justOne : (可選)如果設為 true 或 1,則只刪除一個文檔。
writeConcern :(可選)拋出異常的級別。
demo:刪除title為MongoDB的數據
db.col.remove({'title':'MongoDB'})
1
刪除集合所有數據
db.col.remove({})
1
###3.7MongoDB查詢
MongoDB查詢語法
db.collection.find(query, projection)
1
query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。
易讀方式查詢
db.col.find().pretty()
1
除了 find() 方法之外,還有一個 findOne() 方法,它只返回一個文檔。
###3.8MongoDB條件操作
MongoDB AND條件,可以傳入多個鍵(key),每個鍵(key)以逗號隔開
db.col.find({key1:value1, key2:value2}).pretty()
1
MongoDB OR條件
db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
1
2
3
4
5
6
7
MongoDB AND和OR聯合查詢
AND 和 OR 聯合使用,類似常規 SQL 語句為: ‘where likes>50 AND (by = ‘教程’ OR title = ‘MongoDB 教程’)’
MongoDB條件操作符
(>) 大于 : $gt
(<) 小于 : $lt
(>=) 大于等于 : $gte
(<= ) 小于等于 : $lte
Demo:
獲取 “col” 集合中 “likes” 大于 100 的數據,可以使用以下命令:
db.col.find({"likes" : {$gt : 100}})
1
獲取"col"集合中 “likes” 大于等于 100 的數據,可以使用以下命令
db.col.find({likes : {$gte : 100}})
1
獲取"col"集合中 “likes” 小于 150 的數據,可以使用以下命令:
db.col.find({likes : {$lt : 150}})
1
獲取"col"集合中 “likes” 小于等于 150 的數據,可以使用以下命令:
db.col.find({likes : {$lte : 150}})
1
獲取"col"集合中 “likes” 大于100,小于 200 的數據,可以使用以下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
1
MongoDB Limit和Skip操作符
Limit操作符,Number表示讀取的記錄數
db.COLLECTION_NAME.find().limit(NUMBER)
1
MongoDB skip()方法
Number表示要跳過的記錄數,默認從0開始
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
1
###3.9MongoDB $type操作符
MongoDB $type操作符表
獲取 “col” 集合中 title 為 String 的數據,可以使用以下命令:
db.col.find({"title" : {$type : 2}})
1
###3.10MongoDB排序
使用sort()方法對數據進行排序,sort()方法可以通過參數指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而-1是用于降序排列。
這是對集合進行排序的
db.COLLECTION_NAME.find().sort({KEY:1})
1
###3.11MongoDB索引
索引是特殊的數據結構,索引存儲在一個易于遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構。建立索引可以提高查詢速度。如果沒有索引,MongoDB在讀取數據時必須掃描集合中的每個文件并選取那些符合查詢條件的記錄。
demo:查詢col集合,“title”為索引字段,1為指定按升序創建索引,如果你想按降序來創建索引指定為-1即可。
db.col.ensureIndex({"title":1})
1
在后臺創建索引
db.values.ensureIndex({open: 1, close: 1}, {background: true})
1
###3.12MongoDB聚合
MongoDB中聚合(aggregate)主要用于處理數據(諸如統計平均值,求和等),并返回計算后的數據結果。有點類似sql語句中的 count(*)。
基本語法如:
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
1
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
1
以上實例類似sql語句:
select by_user, count(*) from mycol group by by_user
###附錄
Mongodb Java demo
附錄demo:
去http://mongodb.github.io/mongo-java-driver/下載相應的jar,放在libs文件夾里
pom配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; public class MongoDBJDBC{ public static void main( String args[] ){ try{ // 連接到 mongodb 服務 MongoClient mongoClient = new MongoClient( "10.10.1.1" , 27017 ); // 連接到數據庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); System.out.println("Connect to database successfully"); mongoDatabase.createCollection("colll"); System.out.println("集合創建成功"); }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
MongoDB 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。