一、Mongo的安裝和使用
先下載安裝Mongo到官網(wǎng)下載對(duì)應(yīng)的32為的版本 然后安裝
找到官網(wǎng)的下載中心
https://www.mongodb.com/download-center#community
找到 Previous Releases
找到對(duì)應(yīng)window Vista 32-bit withoutSSL i386
注意:32-bit builds are limited to around 2GB of data. In general you should use the 64 bit builds. See here for more information.
在C盤目錄下面建立data目錄
data目錄下面建立db和log: 2個(gè)目錄----目錄一定要先創(chuàng)建
注意實(shí)際安裝測(cè)試時(shí)需要建立2個(gè)對(duì)應(yīng)的目錄結(jié)構(gòu)
1.windows32位系統(tǒng)組裝安裝自啟動(dòng)代碼
以管理員的方式運(yùn)行下面的命令
如果安裝失敗可以查看日志信息 查看安裝的錯(cuò)誤信息
mongod --dbpath="C:\data\db" --logpath="C:\data\log\log.txt" --serviceName MongoDB --journal --storageEngine=mmapv1 --install
注意:以管理員方式啟動(dòng)
/*
--dapath 指定數(shù)據(jù)的文件存儲(chǔ)路徑
--logpath 數(shù)據(jù)的操作日志
--serviceName 服務(wù)名稱 建議MongoDB
--serviceDisplayName window組件的顯示名稱 可以跟服務(wù)名稱不一致
指定在32位下面的存儲(chǔ)格式
--journal --storageEngine=mmapv1 --install
卸載:
mongod --remove --serviceName "H512MongoDB" --journal
*/
mongod --dbpath="C:\h512database\db" --logpath="C:\h512database\log\log.txt" --serviceName H512MongoDB --serviceDisplayName H512MongoDB --journal --storageEngine=mmapv1 --install
// 32位系統(tǒng) 必須設(shè)置存儲(chǔ)格式為 mmapv1
// 63位系統(tǒng) 不需要設(shè)置
64位安裝
mongod --dbpath="C:\Program Files\MongoDB\data\db" --logpath="C:\Program Files\MongoDB\data\db\log.txt" --serviceName MongoDB
2.然后啟動(dòng)
必須在管理員的權(quán)限下啟動(dòng)
net start MongoDB
net stop MongoDB
3.刪除對(duì)應(yīng)的服務(wù) 修改最后一個(gè)為--remove就可以了
mongod --dbpath="C:\data\db" --logpath="C:\data\log\log.txt" --serviceName MongoDB --journal --storageEngine=mmapv1 --remove
4.輸入mongo(數(shù)據(jù)庫的連接工具) 連接Mongo數(shù)據(jù)庫查看能否連接成功
show dbs //查看對(duì)應(yīng)的所有的數(shù)據(jù)庫
use admin //客戶端 客戶端 手動(dòng)關(guān)閉數(shù)據(jù)庫
db.shutdownServer();
二 贮懈、Mongo的基本使用
Mongo的介紹 NOSQL數(shù)據(jù)庫類型
show dbs // 查看已經(jīng)存在的集合數(shù)據(jù)
db.help() // 查看數(shù)據(jù)庫的所有相關(guān)的方法
db.stats() // 查看數(shù)據(jù)庫的狀態(tài)
db.version() // 查看當(dāng)前db的版本
db.getMongo() // 查看當(dāng)前db的鏈接地址
use blog // 先切換到對(duì)應(yīng)的數(shù)據(jù)集合類
// 切換數(shù)據(jù)庫
// 數(shù)據(jù)庫有多個(gè) 每次只能操作一個(gè)數(shù)據(jù)庫
// 數(shù)據(jù)庫里面的是集合 理解為表
show collections // 查看集合中的所有的數(shù)據(jù)信息
db.users.insert({"book_id":1});
db.users.find().count();
db.users.find({"book_id":1});
//這個(gè)主鍵的id 是自動(dòng)生成的數(shù)據(jù)
db.users.find({"_id":ObjectId("58bcd55fbcbc58571cb74cd6")});
db.userInfo.find({name: /mongo/});
//相當(dāng)于%%select * from userInfo where name like ‘%mongo%’;
db.userInfo.find({name: /^mongo/});
//select * from userInfo where name like ‘mongo%’;
// update 第一個(gè)是條件 第二個(gè)是要修改的值
db.users.update({"book_id":1},{$set:{"book_id":8}});
//執(zhí)行后顯示: WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.users.update({"book_id":1},{$set:{"book_di":10}},{"multi":true});
// 注意update 和 save的區(qū)別
update有3個(gè)參數(shù)
save方法只有一個(gè)參數(shù) 并且 如果更新的鍵沒有 則會(huì)替換整個(gè)字段 會(huì)丟失一些字段信息
db.user.save({"_id":ObjectId("58bce7acbcbc58571cb74cd9"),"book_name":"ios"});
// 刪除 remove方法只有一個(gè)條件
db.user.insert({"username":"david"});
db.user.insert({"username":"david"});
db.user.insert({"username":"david"});
先執(zhí)行前面的插入3條數(shù)據(jù) 然后在執(zhí)行后面的刪除 刪除前面插入的3條數(shù)據(jù)信息
db.user.remove({"username":"david"});
// 第2個(gè)參數(shù)默認(rèn)為false 如果設(shè)置為true 則只刪除 查詢到的第一條記錄信息
// 第2個(gè)參數(shù) 表示是否是單行刪除 默認(rèn)為false 表示不是單行刪除
db.user.remove({"username":"david"},true);
/*
find:查詢到的集合信息
{ "_id" : ObjectId("58bce5e3bcbc58571cb74cd8"), "book_id" : 999, "book_name" : "html5" }
{ "_id" : ObjectId("58bce7acbcbc58571cb74cd9"), "book_name" : "ios" }
{ "_id" : ObjectId("58bceadfbcbc58571cb74cde"), "username" : "david" }
{ "_id" : ObjectId("58bceadfbcbc58571cb74cdf"), "username" : "david" }
{ "_id" : ObjectId("58bceae1bcbc58571cb74ce0"), "username" : "david" }
*/
// 空條件 表示刪除集合中所有的元素信息
// 類似清空表中的數(shù)據(jù) 但是表不刪除 mongodb中叫索引(即表索引)不刪除
db.user.remove({});
// 刪除整個(gè)集合 類似刪除表的操作
// 刪除整個(gè)文檔 和 文檔對(duì)應(yīng)的索引 即表名稱
db.user.drop();
db.dropDatabase(); 刪除當(dāng)前所在的數(shù)據(jù)庫信息
Mac下面 mongo命令行窗口中 輸入cls 清除屏幕的信息
// 全部替換為后面的值
db.testuser.update({username:"tom"},{"username":"jack","age":20,sex:1});
// 設(shè)置數(shù)據(jù)字段中的屬性值 自增顯示
db.testuser.update({"username":"tom"},{$inc:{age:1}});
// 刪除某個(gè)字段
db.testuser.update({username:"tom"},{$unset:{sex:1}});
// 可以向記錄中添加或修改 一個(gè)值 不存在就添加 存在就修改
db.testuser.update({username:"jack"},{$set:{like:[]}});
// pull 向數(shù)組中刪除一條記錄
db.testuser.update({"username":"jack"},{"$pull":{like:["develpment"]}})
// push 向數(shù)組中添加一條記錄
db.testuser.update({"username":"jack"},{"$push":{like:["develpment"]}})
// push 向數(shù)組中添加多條信息
db.testuser.update({"username":"jack"},{$pushAll:{like:["sport","computer"]}})
// 刪除數(shù)組中的最后一個(gè)值
db.testuser.update({"username":"jack"},{$pop:{like:1}})
// 刪除數(shù)組中的第一個(gè)值
db.testuser.update({"username":"jack"},{$pop:{like:-1}})
db.testuser.remove({});
db.testuser.remove({username:"david"});
db.testuser.drop();
三、數(shù)據(jù)庫的備份和恢復(fù)
// 從制度的位置恢復(fù)數(shù)據(jù)庫
mongodump -d blog -o /testData
mongorestore -d blogtest /testData/blog