MongoDB之基本操作

stonebox1122發表於2017-08-24
在MongoDB資料庫裡面是存在有資料庫的概念的,但是沒有模式(所有的資訊都是按照文件儲存的),文件的結構就是JSON結構,只不過在進行一些資料處理的時候才會使用到MongoDB自己的一些運算子。

1、切換到stone資料庫:
> db
test
執行 "db" 命令可以顯示當前資料庫物件
> use stone
switched to db stone
> show databases;
admin  0.000GB
local  0.000GB
實際上這個時候並不會建立資料庫,只有在資料庫裡面儲存集合資料之後才能夠真正建立資料庫。
  ● admin: 從許可權的角度來看,這是"root"資料庫。要是將一個使用者新增到這個資料庫,這個使用者自動繼承所有資料庫的許可權。一些特定的伺服器端命令也只能從這個資料庫執行,比如列出所有的資料庫或者關閉伺服器。
  ● local: 這個資料永遠不會被複制,可以用來儲存限於本地單臺伺服器的任意集合
  ● config: 當Mongo用於分片設定時,config資料庫在內部使用,用於儲存分片的相關資訊。

2、建立一個集合:
> db.createCollection("emp");
{ "ok" : 1 }
> show databases;
admin  0.000GB
local  0.000GB
stone  0.000GB
這個時候stone資料庫才會真正存在。

3、但是很多時候如果按照以上的程式碼形式進行會覺得你不正常,因為正常人使用MongoDB資料庫集合操作的時候都是直接向裡面儲存一個資料。
> db.dept.insert({"deptno":10,"dname":"財務部","loc":"北京"})
WriteResult({ "nInserted" : 1 })

4、檢視所有集合
> show collections;
dept
emp
發現dept集合自動建立。

5、檢視emp表的資料
語法:db.集合名稱.find({若干條件})
> db.dept.find();
{ "_id" : ObjectId("59904d44d31a95e93db0da1c"), "deptno" : 10, "dname" : "財務部", "loc" : "北京" }
從傳統的資料表來看(集合就相當於表的結構),表的結構一旦定義就必須按照其定義的要求進行內容的編寫。但是MongoDB不一樣,它可以自己隨意擴充資料。

6、增加不規則的資料
> var deptData={
... "deptno":20,
... "dname":"研發部",
... "loc":"深圳",
... "count":20,
... "avg":8000
... };
> db.dept.insert(deptData);
WriteResult({ "nInserted" : 1 })
> db.dept.find()
{ "_id" : ObjectId("59904d44d31a95e93db0da1c"), "deptno" : 10, "dname" : "財務部", "loc" : "北京" }
{ "_id" : ObjectId("59904f2dd31a95e93db0da1d"), "deptno" : 20, "dname" : "研發部", "loc" : "深圳", "count" : 20, "avg" : 8000 }
此時dept集合的內容可以由使用者隨便定義,完全不用考慮其他的結構,那麼實際上就必須明確一點了,在MongoDB資料庫之中是絕對不可能存在有檢視集合結構的操作。

7、關於ID的問題
在MongoDB集合在的每一行記錄都會自動的生成一個:“"_id" : ObjectId("59904f2dd31a95e93db0da1d")”資料,這個資料組成:“時間戳 + 機器碼 + 程式PID + 計數器”,這個ID的資訊是MongoDB資料庫自己為使用者生成的。

8、檢視單獨的一個文件資訊
> db.dept.findOne()
{
        "_id" : ObjectId("59904d44d31a95e93db0da1c"),
        "deptno" : 10,
        "dname" : "財務部",
        "loc" : "北京"
}

9、刪除資料
> db.dept.remove({"_id" : ObjectId("59904d44d31a95e93db0da1c")});
WriteResult({ "nRemoved" : 1 })
> db.dept.find();
{ "_id" : ObjectId("59904f2dd31a95e93db0da1d"), "deptno" : 20, "dname" : "研發部", "loc" : "深圳", "count" : 20, "avg" : 8000 }

10、更新資料
> var deptData={
... "deptno":30,
... "dname":"IT",
... "loc":"北京"
... };
> db.dept.update({"_id" : ObjectId("59904f2dd31a95e93db0da1d")},deptData);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.dept.find();
{ "_id" : ObjectId("59904f2dd31a95e93db0da1d"), "deptno" : 30, "dname" : "IT", "loc" : "北京" }

11、刪除集合
語法:db.集合名稱.drop();
> db.dept.drop();
true
> show collections;
emp

12、刪除資料庫(刪除當前所在的資料庫)
> db.dropDatabase();
{ "dropped" : "stone", "ok" : 1 }
> show dbs;
admin  0.000GB
local  0.000GB
刪除資料庫是刪除當前所在的資料庫,必須先切換到資料庫後才可以刪除。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144081/,如需轉載,請註明出處,否則將追究法律責任。

相關文章