1. 程式人生 > >筆記-DB-mongodb-常用操作-1

筆記-DB-mongodb-常用操作-1

  筆記-DB-mongodb-常用操作-1

 

1.  啟動及連線

1.1.  啟動

啟動mongod

windows下:

1.   如已新增服務 net start <service name>

 

1.2.  連線

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

 

mongodb://

 這是固定的格式,必須要指定。

username:[email protected] 可選項,如果設定,在連線資料庫伺服器之後,驅動都會嘗試登陸這個資料庫

host1 必須的指定至少一個host, host1 是這個URI唯一要填寫的。它指定了要連線伺服器的地址。如果要連線複製集,請指定多個主機地址。

portX 可選的指定埠,如果不填,預設為27017

/database 如果指定username:[email protected],連線並驗證登陸指定資料庫。若不指定,預設開啟 test 資料庫。

?options 是連線選項。如果不使用/database,則前面需要加上/。所有連線選項都是鍵值對name=value,鍵值對之間通過&或;(分號)隔開

 

1.2.1.  例項

使用預設埠來連線 MongoDB 的服務。

mongodb://localhost

 

通過 shell 連線 MongoDB 服務:

$ ./mongo

MongoDB shell version: 3.0.6

connecting to: test

……

 

 

1.2.2.  MongoDB 連線命令格式

使用使用者名稱和密碼連線到 MongoDB 伺服器,你必須使用 'username:[email protected]/dbname' 格式,'username'為使用者名稱,'password' 為密碼。

使用使用者名稱和密碼連線登陸到預設資料庫:

$ ./mongo

MongoDB shell version: 3.0.6

connecting to: test

使用使用者 admin 使用密碼 123456 連線到本地的 MongoDB 服務上。輸出結果如下所示:

> mongodb://admin:[email protected]/

...

使用使用者名稱和密碼連線登陸到指定資料庫,格式如下:

mongodb://admin:[email protected]/test

更多連線例項

連線本地資料庫伺服器,埠是預設的。

mongodb://localhost

使用使用者名稱fred,密碼foobar登入localhost的admin資料庫。

mongodb://fred:[email protected]

使用使用者名稱fred,密碼foobar登入localhost的baz資料庫。

mongodb://fred:[email protected]/baz

連線 replica pair, 伺服器1為example1.com伺服器2為example2。

mongodb://example1.com:27017,example2.com:27017

連線 replica set 三臺伺服器 (埠 27017, 27018, 和27019):

mongodb://localhost,localhost:27018,localhost:27019

連線 replica set 三臺伺服器, 寫入操作應用在主伺服器 並且分佈查詢到從伺服器。

mongodb://host1,host2,host3/?slaveOk=true

直接連線第一個伺服器,無論是replica set一部分或者主伺服器或者從伺服器。

mongodb://host1,host2,host3/?connect=direct;slaveOk=true

當你的連線伺服器有優先順序,還需要列出所有伺服器,你可以使用上述連線方式。

安全模式連線到localhost:

mongodb://localhost/?safe=true

以安全模式連線到replica set,並且等待至少兩個複製伺服器成功寫入,超時時間設定為2秒。

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

 

 

 

2.  資料庫操作

2.1.  檢視/切換

show dbs     #檢視當前資料庫名,注意:使用use建立的資料庫暫不顯示,新增資料後顯示。

db   /      db.getName() #檢視當前資料庫名

db.stats()      #檢視當前資料庫狀態

db.version()  #檢視資料庫版本

檢視當前db的連結機器地址       db.getMongo();

 

2.2.  建立/刪除

 

use DATABASE_NAME

如果資料庫不存在,則建立資料庫,否則切換到指定資料庫。

例項

以下例項我們建立了資料庫 runoob:

> use runoob

switched to db runoob

 

db.dropDatabase()

刪除資料庫

 

3.  collection

 

集合分為固定與非固定collection,capped

 

3.1.  capped collections

Capped collections 是固定大小的collection。

它有很高的效能以及佇列過期的特性(過期按照插入的順序). 有點和 "RRD" 概念類似。

Capped collections是高效能自動的維護物件的插入順序。它非常適合類似記錄日誌的功能 和標準的collection不同,你必須要顯式的建立一個capped collection, 指定一個collection的大小,單位是位元組。collection的資料儲存空間值提前分配的。

要注意的是指定的儲存大小包含了資料庫的頭資訊。

db.createCollection("mycoll", {capped:true, size:100000})

在capped collection中,你能新增新的物件。

能進行更新,然而,物件不會增加儲存空間。如果增加,更新就會失敗 。

資料庫不允許進行刪除。使用drop()方法刪除collection所有的行。

注意: 刪除之後,你必須顯式的重新建立這個collection。

在32bit機器中,capped collection最大儲存為1e9( 1X109)個位元組。

 

3.2.  常用操作

檢視所有集合    show tables/show collections

刪除 db.<collection name>.drop()

 

3.3.  建立集合

集合可以自動建立如下例:

> db.mycol2.insert({"name" : "菜鳥教程"})

> show collections

mycol2

 

顯示建立集合:

db.createCollection(name, options)

引數說明:

name: 要建立的集合名稱

options: 可選引數, 指定有關記憶體大小及索引的選項

 

4.  document

 

4.1.1.  查詢

MongoDB 查詢文件使用 find() 方法。

find() 方法以非結構化的方式來顯示所有文件。

 

語法

MongoDB 查詢資料的語法格式如下:

db.collection.find(query, projection)

query :可選,使用查詢操作符指定查詢條件

projection :可選,使用投影操作符指定返回的鍵。查詢時返回文件中所有鍵值, 只需省略該引數即可(預設省略)。

如果你需要以易讀的方式來讀取資料,可以使用 pretty() 方法,語法格式如下:

>db.col.find().pretty()

pretty() 方法以格式化的方式來顯示所有文件。

 

 

 

4.1.2.  插入

db.COLLECTION_NAME.insert(document)

 

以下文件可以儲存在 MongoDB 的 runoob 資料庫 的 col 集合中:

>db.col.insert({title: 'MongoDB 教程',

    description: 'MongoDB 是一個 Nosql 資料庫',

    by: '菜鳥教程',

    url: 'http://www.runoob.com',

    tags: ['mongodb', 'database', 'NoSQL'],

    likes: 100

})

如果該集合不在該資料庫中, MongoDB 會自動建立該集合並插入文件

4.1.3.  更新

update() 方法

db.collection.update(

   <query>,

   <update>,

   {

     upsert: <boolean>,

     multi: <boolean>,

     writeConcern: <document>

   }

)

 

 

例項

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 輸出資訊

> db.col.find().pretty()

{

        "_id" : ObjectId("56064f89ade2f21f36b03136"),

        "title" : "MongoDB",

        "description" : "MongoDB 是一個 Nosql 資料庫",

        "by" : "菜鳥教程",

        "url" : "http://www.runoob.com",

        "tags" : [

                "mongodb",

                "database",

                "NoSQL"

        ],

        "likes" : 100

}

 

 

save() 方法

save() 方法通過傳入的文件來替換已有文件。語法格式如下:

db.collection.save(

   <document>,

   {

     writeConcern: <document>

   }

)

引數說明

  • document : 文件資料。
  • writeConcern :可選,丟擲異常的級別。

 

以下例項中我們替換了 _id 為 56064f89ade2f21f36b03136 的文件資料:

>db.col.save({

    "_id" : ObjectId("56064f89ade2f21f36b03136"),

    "title" : "MongoDB",

    "description" : "MongoDB 是一個 Nosql 資料庫",

    "by" : "Runoob",

    "url" : "http://www.runoob.com",

    "tags" : [

            "mongodb",

            "NoSQL"

    ],

    "likes" : 110

})

 

4.1.4.  刪除

remove() 方法的基本語法格式如下所示:

db.collection.remove(

   <query>,

   <justOne>

)

 

6.  使用者管理

1、使用者概念

Mongodb的使用者是由 使用者名稱+所屬庫名組成

例如:

登入mongo  testdb1 ,建立使用者testuser

登入mongo  testdb2 ,建立使用者testuser

那上面建立的使用者分別是:[email protected][email protected]

 

也就是說在哪個庫下面建立使用者,這個使用者就是哪個庫的

 

6.1.  檢視

show users

 

6.2.  add/delete

db.addUser(“name”)

db.addUser("userName", "pwd123", true); 新增使用者、設定密碼、是否只讀

db.removeUser("userName");