筆記-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");