.......................................................................................
環境:centos7
Ip: 172.16.200.48
..............................................................................................javascript
# 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
# mongod -v
安裝成功。java
# 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
# cd /usr/local/mongodb/bin # ./mongo
> use test 建立數據庫test
使用use DATABASE_NAME建立一個數據庫。若是數據庫不存在,則建立數據庫,不然切換到指定數據庫。數據庫
[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() #查看數據庫服務器的狀態
啓動mongodb數據庫vim
能夠查看db當前指向哪一個數據庫centos
使用use DATABASE_NAME使用use 數據庫名就能夠切換全局變量db當前指向的數據庫。注意:use操做同時能夠建立數據庫,若是use+一個不存在的數據庫名,則use執行後,MongoDB會建立對應數據庫。數組
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;
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}) ... }
#顯示集合文檔 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" }
#刪除文檔內容 mongos> db.col.remove({"name":"antian"}); #刪除集合:db.col.drop();
mongos> db.col.find({},{"sip":1,_id:0}).limit(2);
降序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":-1}); 升序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":1});
mongos> db.col.ensureIndex({"id":1})