mongodb入門教程


title: mongodb入門教程
date: 2016-04-06 14:47:18
tags:
---linux

爲何要認識呢,由於這玩意就一傻逼

借用一下百科的介紹
MongoDB
是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。mongodb

蛋疼的就是這個介於。。。之間,既不能把它當成關係型數據庫也不能當作非關係型數據庫,具體哪裏不爽下面慢慢介紹shell

1、安裝

vim conf/mongodb.confapp

dbpath=/home/waimaiw/mongodb/db
logpath=/home/waimaiw/mongodb/logs/mongodb.log
port=27017
nohttpinterface=true
auth=true

綁定配置文件和訪問地址運維

/home/waimaiw/mongodb/bin/mongod --bind_ip localhost -f
/home/waimaiw/mongodb/conf/mongodb.conf
綁定多個ip
--bind_ip=ip1,ip2yii

配置開機啓動學習

vim /etc/rc.localspa

/home/waimaiw/mongodb/bin/mongod --config
/home/waimaiw/mongodb/bin/mongodb.conf

關閉

怎麼關閉 mongoDB?千萬不要 kill -9 pid,能夠 kill -2 pid 或 db.shutdownServer()

其實建議使用supervisor管理啓動,配置以下

[program:mongodb]
command=/home/waimaiw/mongodb/bin/mongod --config
/home/waimaiw/mongodb/conf/mongodb.conf
directory=/home/waimaiw/mongodb
autostart=true
user=waimaiw


有兩個警告
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
** We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
** We suggest setting it to 'never'
解決辦法
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never> /sys/kernel/mm/transparent_hugepage/defrag

使用supervisor的話 要去掉 配置文件folk這行參數.

2、權限

mongo3.0之後 權限管理有很大變化,不懂得建議看官放文檔,其餘百度谷歌各類教程的基本還都是2.x的方式。

第一次啓動不要加--auth參數

這樣默認的啓動是沒有密碼的,做爲一個運維這是不能容忍的,因此先配置權限

use admin
db.createUser(
    {
        user: "waimaiw",
        pwd: "waimaiw",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    }
)

查看用戶
show users

db.system.users.find()

這裏說明一下,mongodb的每個數據庫都要單獨的權限

下次啓動的時候就加上--auth參數,如今一些操做就須要你輸入用戶名和密碼了
以下

use admin
db.auth("waimaiw",waimaiw)

返回1,就說明認證成功

或者這樣登陸也能夠

/home/waimaiw/mongodb/bin/mongo -u waimaiw -p waimaiw --authenticationDatabase admin

3、使用

經過/home/waimaiw/mongodb/bin/mongo 進入mongodb的shell

mongo的shell 是js的,因此能夠進行簡單的運算

有權限的認證下權限,而後
show dbs

會顯示以下

注意: 沒有插入數據的庫是不會顯示的

另外mongo建立數據庫的命令 use 庫名 若是沒有這個庫 就會建立一個數據庫

刪除數據庫:

db.dropDatabase()

mongo的表也叫文檔,mongo的文檔不須要建立字段,而且相同的字段可使用不一樣的類型,這也是mongo和關係型書庫最大的區別

須要注意的是:

  • mongo中鍵值都是有序的
  • mongo類型區分大寫和小寫
  • mongo中不能有重複的鍵

集合

集合在mongodb中至關於關係型數據庫的表

createCollection() 方法

MongoDB db.createCollection(name, options) 是用來建立集合.

集合在mongodb能夠建立和能夠不建立

直接使用命令

db.lala.insert({"name":"sunhong"})

就能夠常見一個名叫lala的集合,並將數據插入

也能夠建立

db.createCollection("diandongche")

也能夠加上參數

db.createCollection("baowenxiang",{ capped : true, autoIndexID : true, size : 6142800, max : 10000 })

參數說明

字段 類型 描述
capped Boolean (可選)若是爲true,則啓用封頂集合。封頂集合是固定大小的集合,會自動覆蓋最先的條目,當它達到其最大大小。若是指定true,則須要也指定尺寸參數。
autoIndexID Boolean (可選)若是爲true,自動建立索引_id字段的默認值是false。
size number (可選)指定最大大小字節封頂集合。若是封頂若是是 true,那麼你還須要指定這個字段。
max mubmer (可選)指定封頂集合容許在文件的最大數量。

檢查集合

show collections

刪除集合

db.COLLECTION_NAME.drop()

文檔

文檔至關於關係型數據庫中的表的行,也就是記錄

插入文檔在說集合的時候說了點

db.lala.insert({"name":"sunhong"})

mongodb的數據格式都是鍵值的方式存儲,因此放在大括號裏,這有點像Python的字典

查詢文檔

不一樣於關係型數據庫,mongodb的查詢關鍵字是find,語法以下

db.COLLECTION_NAME.find()

find() 方法將在非結構化的方式顯示全部的文件。 若是顯示結果是格式化的,那麼能夠用pretty() 方法。

db.COLLECTION_NAME.find().pretty()

不過這在mongodb3.x中好像不太好用

RDBMS Where子句等效於MongoDB
操做 語法 示例 RDBMS等效語句
Equality {<key>:<value>} db.mycol.find({"by":"yiibai tutorials"}).pretty() where by = 'yiibai tutorials'
Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50
AND 在 MongoDB

mongodb中沒有and關鍵字,而是使用逗號「,」來鏈接條件的,以下

db.mycol.find({key1:value1, key2:value2}).pretty()
OR 在 MongoDB

mongodb中的or的用法也不太同樣,變成了$or 用法以下

db.mycol.find(
    {
        $or: [
     {  key1: value1}, {key2:value2}
         ]
    }
).pretty()

更新文檔

MongoDB的update()和save()方法用於更新文檔到一個集合。 update()方法將現有的文檔中的值更新,而save()方法使用傳遞到save()方法的文檔替換現有的文檔。

update()方法的基本語法以下

db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

mongodb 的 save()方法以下所示的基本語法:

db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
刪除文檔

MongoDB 的 remove()方法用於從集合中刪除文檔。remove()方法接受兩個參數。一個是標準缺失,第二是justOne標誌

  • deletion criteria : 根據文件(可選)刪除條件將被刪除。
  • justOne : (可選)若是設置爲true或1,而後取出只有一個文檔。

remove()方法的基本語法以下

db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

只刪除一個

db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

刪除全部

db.mycol.remove({})

基本的差很少這麼多了,之後再深刻學習。

相關文章
相關標籤/搜索