【MongoDB】mongodb安裝及經常使用操做命令

.......................................................................................
環境:centos7
Ip: 172.16.200.48
..............................................................................................javascript

1、Mongodb的安裝與啓動

一、mongo的安裝

步驟 一、下載:

# cd /usr/local/src/
# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.3.tgz   
# tar -zxvf mongodb-linux-x86_64-rhel70-3.4.3.tgz

步驟 二、配置環境變量

# vim /etc/profile
添加一下內容:
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

步驟 三、查看mongodb版本信息 

# mongod -v

安裝成功。java

二、mongo的啓動

步驟 四、建立數據庫目錄(MongoDB須要自建數據庫文件夾)

# mkdir -p /data/mongodb
# mkdir -p /data/mongodb/log
# touch /data/logs/mongodb/mongodb.log

步驟 五、添加配置文件

新建mongodb.conf配置文件, 經過這個配置文件進行啓動.linux

# vim /etc/mongodb.conf
配置文件參數說明:
mongodb的參數說明:

--dbpath 數據庫路徑(數據文件)

--logpath 日誌文件路徑

--master 指定爲主機器

--slave 指定爲從機器

--source 指定主機器的IP地址

--pologSize 指定日誌文件大小不超過64M.由於resync是很是操做量大且耗時,最好經過設置一個足夠大的oplogSize來避免resync(默認的 oplog大小是空閒磁盤大小的5%)。

--logappend 日誌文件末尾添加

--port 啓用端口號

--fork 在後臺運行

--only 指定只複製哪個數據庫

--slavedelay 指從複製檢測的時間間隔

--auth 是否須要驗證權限登陸(用戶名和密碼)
配置文件內容:
   dbpath=/data/mongodb
   logpath=/data/logs/mongodb/mongodb.log
   logappend=true
   port=27017
   fork=true
   ##auth = true # 先關閉, 建立好用戶在啓動

步驟 六、經過配置文件啓動

# mongod -f /etc/mongodb.conf           ##啓動

出現successfully表示啓動成功了。
說明
MongoDB的啓動:
不建議用service mongod start或者chkconfig mongod on來啓動MongoDB,由於mongod每次啓動須要帶參數,否則會形成錯誤; 
建議用mongod命令來啓動,先設置好配置文件/etc/mongod.conf後,每次手動用命令啓動:mongod -f /etc/mongodb.conf
或者設置開機重啓: echo 「mongod –f /etc/mongod.conf」 >>/etc/rc.d/rc.local
MongoDB的關閉
不建議使用強制關閉MongoDB: service mongod stop
推薦使用:從mongodb的admin中關閉mongodb

> use admin   
switched to db admin    
> db.shutdownServer()    
server should be down...

或者mongod --shutdown
使用shutdownServer關閉MongoDB,若有MongoDB主從服務器,則在服務關閉前同步主從服務器;強制關閉則不會;shell

步驟 七、進入mongodb的後臺管理shell

# cd /usr/local/mongodb/bin
# ./mongo

步驟 八、建立數據庫

> use test        建立數據庫test

使用use DATABASE_NAME建立一個數據庫。若是數據庫不存在,則建立數據庫,不然切換到指定數據庫。數據庫

2、Mongo中經常使用命令

[root@snails ~]# ps -ef|grep mongod
[root@snails ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
> show dbs  #顯示數據庫列表 
> show collections  #顯示當前數據庫中的集合(相似關係數據庫中的表)
> show users  #顯示用戶
> use <db name>  #切換當前數據庫,若是數據庫不存在則建立數據庫。 
> db.help()  #顯示數據庫操做命令,裏面有不少的命令 
> db.foo.help()  #顯示集合操做命令,一樣有不少的命令,foo指的是當前數據庫下,一個叫foo的集合,並不是真正意義上的命令 
> db.foo.find()  #對於當前數據庫中的foo集合進行數據查找(因爲沒有條件,會列出全部數據) 
> db.foo.find( { a : 1 } )  #對於當前數據庫中的foo集合進行查找,條件是數據中有一個屬性叫a,且a的值爲1
> db.dropDatabase()  #刪除當前使用數據庫
> db.cloneDatabase("127.0.0.1")   #將指定機器上的數據庫的數據克隆到當前數據庫
> db.copyDatabase("mydb", "temp", "127.0.0.1")  #將本機的mydb的數據複製到temp數據庫中
> db.repairDatabase()  #修復當前數據庫
> db.getName()  #查看當前使用的數據庫,也能夠直接用db
> db.stats()     #顯示當前db狀態
> db.version()   #當前db版本
> db.getMongo()  #查看當前db的連接機器地址
> db.serverStatus()  #查看數據庫服務器的狀態

3、Shell中的基本操做:增刪改查

1. # mongo

啓動mongodb數據庫vim

2. > db

能夠查看db當前指向哪一個數據庫centos

3. 進入數據庫 > use test;

使用use DATABASE_NAME使用use 數據庫名就能夠切換全局變量db當前指向的數據庫。注意:use操做同時能夠建立數據庫,若是use+一個不存在的數據庫名,則use執行後,MongoDB會建立對應數據庫。數組

4. 查詢數據庫 > show dbs; (要顯示數據庫必須插入至少一條文檔)

5. 刪除數據庫 > db.dropDatabase();

6.建立、刪除集合

createCollection() 方法
db.createCollection(name, options)
在命令中, name 是要建立的集合的名稱. Options 是一個文件,用於指定配置的集合
刪除集合:drop() 方法
db.COLLECTION_NAME.drop() 是用來從數據庫中刪除一個集合服務器

#建立集合
#進入數據庫mongos> use test;
mongos> db.createCollection("mycollection")
{ "ok" : 1 }
mongos> show collections;   #查看集合
mycollection

#刪除集合
#進入數據庫mongos> use testdb;
mongos> show collections;
mycollection
mongos> db.mycollection.drop();
true
mongos> show collections;

7. 插入文檔

MongoDB使用insert()或save()方法向集合中插入文檔,語法以下:

db.COLLECTION_NAME.insert(document)

插入文檔

> use test
switched to db test
> db.col.insert({name:'morris',age:22})
WriteResult({ "nInserted" : 1 })

以上實例中col是集合名,若是該集合不在該數據庫中,MongoDB會自動建立該集合並插入文檔。
查看已插入的文檔
> db.col.find()
{ "_id" : ObjectId("56e12c22de2a8692a3099065"), "name" : "morris", "age" : 22 }
在咱們插入文檔的時候,若是咱們沒有爲該文檔指定_id,mongodb將會爲咱們的文檔自動建立一個不會重複的ObjectId

有條件的查詢已插入文檔

db.[集合名].find( <query>, <projection> )
# > db.user.find({name:"user2"})  ##查詢name爲user2這條記錄
# > db.user.find({name:"user2"},{age:1});  ## 查詢name爲user2這條記錄的age字段

定義變量插入文檔

> doc={name:'jack',age:20}
{ "name" : "jack", "age" : 20 }
> db.col.insert(doc)
WriteResult({ "nInserted" : 1 })
> db.col.find()
{ "_id" : ObjectId("56e12c22de2a8692a3099065"), "name" : "morris", "age" : 22 }
{ "_id" : ObjectId("56e12f49de2a8692a3099068"), "name" : "jack", "age" : 20 }
插入文檔也可使用db.col.save(document)命令。若是不指定_id 字段save()方法相似於insert()方法。若是指定_id字段,則會更新該_id的數據。

插入多個文檔

若是咱們在insert中傳入了多個文檔,mongodb只會插入第一個文檔,下面的代碼中只插入了第一個文檔。
> db.user.find()
> db.user.insert({name:"user1"},{name:"user2"}) 
> db.user.find()
{ "_id" : ObjectId("519cd757f83727a8baf0a8e2"), "name" : "user1" }
若是咱們想一次插入多個文檔,能夠將多個文檔組合成一個數組,這樣就可以插入成功了,例子代碼以下:
> db.user.find()
> db.user.insert([{name:"user1"},{name:"user2"}])
> db.user.find()
{ "_id" : ObjectId("519cd842f83727a8baf0a8e3"), "name" : "user1" }
{ "_id" : ObjectId("519cd842f83727a8baf0a8e4"), "name" : "user2" }
 咱們可使用javascript批量插入數據。因爲mongodb shell簡單的說就是一個javascript shell因此javascript代碼能夠在mongodb shell中運行,因此咱們可使用javascript代碼進行批量插入數據,例如咱們插入10個用戶到user集合中,代碼以下:
> for(i=1;i<=10;i++){
... db.user.insert({_id:i,name:"user"+i,age:10+i})
... }

8.更新文檔

#顯示集合文檔
mongos> db.col.find();
{ "_id" : ObjectId("55113e5477eaee1608881c84"), "name" : "antian" }
#更新文檔
mongos> db.col.update({"name":"antian"},{"name":"wuhan"});
#顯示集合文檔
mongos> db.col.find();
{ "_id" : ObjectId("55113e5477eaee1608881c84"), "name" : "wuhan" }

9.刪除文檔

#刪除文檔內容
mongos> db.col.remove({"name":"antian"});
#刪除集合:db.col.drop();

10.限制記錄

mongos> db.col.find({},{"sip":1,_id:0}).limit(2);

11.排序文檔

降序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":-1});
升序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":1});

12.建立索引

mongos> db.col.ensureIndex({"id":1})
相關文章
相關標籤/搜索