【mongodb安裝配置】

weixin_34321977發表於2018-08-18

mongodb官網
mongod 是用來連線到mongodb資料庫伺服器的,即伺服器端。
mongo 是用來啟動MongoDB shell的,是mongodb的命令列客戶端。

1.mac安裝mongodb

$ brew install mongodb

開啟終端進入一個資料夾執行下面命令:

$ mongod --config /usr/local/etc/mongod.conf
$ mongod --dbpath filepath(如果是空資料夾會自動建立資料庫)

連線完成後可以通過http訪問該資料庫,mongodb預設使用了27017埠,因此在瀏覽器中開啟http://localhost:27017可以顯示一段英文表示連線成功。

注意:一般我們資料庫都設定登入密碼,上一步可以這麼執行
$ mongod --dbpath filepath --port 20000 --auth

設定了埠號為20000,並設定了需要auth許可權,下面就得設定許可權了
使用者管理員的角色名叫 userAdminAnyDatabase,這個角色只能在 admin 資料庫中建立。

$ mongo
$ use test  (這裡建立了一個test集合)
$ use admin
$ db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
$ db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
$ db.auth("root","root123")  返回 1 表示登入成功
$ db.auth("testuser","testpass")  // 返回1

基本語法

使用資料庫:$ use dbname (use一個不存在的資料庫就相當於新建)
想檢視當前在哪個資料庫裡:$ db
列出所有資料庫:$ show dbs
顯示集合:$ show collections

$ mongo 
注意:如果連線沒設定--port埠號預設是27017埠
但是設定了埠號的話,使用
$ mongo --port 20000開啟mongo
如果還有集合密碼的話就輸入
$ mongo --port 20000 -u testuser -p testpass  這裡指定了連線的埠和許可權密碼
具體可以 $ mongo --help檢視
如果連線遠端資料庫 換成  $ mongo 遠端IP地址:埠號 -u 使用者名稱 -p 密碼

注意沒有讀寫許可權,加許可權sudo chown 那個資料夾目錄,開啟讀寫許可權

插入資料: $ db.student.insert({"name":"xiaoming","age":12,"sex":"man"});
student就是所謂的集合。集合中儲存著很多json,student是第一次使用,集合將自動建立。

$ db.student.find(); 顯示集合內容
我們不可能一條一條的insert。所以,我們希望用sublime在外部寫好資料庫的形式,然後匯入資料庫:
$ mongoimport --db test --collection restaurants --drop --file aa.json
--db test  想往哪個資料庫裡面匯入
--collection restaurants  想往哪個集合中匯入
--drop 把集合清空
--file aa.json  哪個檔案
這樣,我們就能用sublime建立一個json檔案,然後用mongoimport命令匯入,這樣學習資料庫非常方便。

刪除當前所在的資料庫:
$ db.dropDatabase();

查詢資料
列出這個集合的所有文件:
$ db.restaurants.find()
精確匹配
$ db.student.find({"score.shuxue":70});
多個條件:
$ db.student.find({"score.shuxue":70 , "age":12})
大於條件:
$ db.student.find({"score.yuwen":{$gt:50}});
尋找所有年齡是9歲,或者11歲的學生 
$ db.student.find({$or:[{"age":9},{"age":11}]});
查詢完畢之後,打點呼叫sort,表示升降排序。
$ db.restaurants.find().sort( { "borough": 1, "address.zipcode": 1 } )

修改資料
查詢名字叫做小明的,把年齡更改為16歲:
$ db.student.update({"name":"小明"},{$set:{"age":16}});
查詢數學成績是70,把年齡更改為33歲:
$ db.student.update({"score.shuxue":70},{$set:{"age":33}});
$ db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true});
完整替換,不出現$set關鍵字了:
$ db.student.update({"name":"小明"},{"name":"大明","age":16});

刪除資料
$ db.restaurants.remove( { "borough": "Manhattan" } )
$ db.restaurants.remove( { "borough": "Queens" }, { justOne: true } )

相關文章