mongodb創建、刪除、切換

數據庫的查看與我們平時的mysql的sql語句一樣 

show databases;


切換、刪除數據庫

例如:刪除一個叫local的數據庫

> use local
switched to db local
> db.

> db.dropDatabase()
{ "dropped" : "local", "ok" : 1 }


創建數據庫,插入數據

例如:創建一個mymongodb的數據庫
> use mymongodb
switched to db mymongodb

> db.person.insert({'name':'aaa','age':'222'})
WriteResult({ "nInserted" : 1 })

建立一個 test 的集合並寫入一些數據. 建立兩個對象 j t , 並保存到集合中去.
在例子裏 “>” 來表示是 shell 輸入提示符
> j = { name : "mongo" };
{"name" : "mongo"}
> t = { x : 3 };
{ "x" : 3 }
> db.things.save(j);
> db.things.save(t);
> db.things.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
>
有幾點需要注意一下:
不需要預先創建一個集合. 在第一次插入數據時候會自動創建.

在文檔中其實可以存儲任何結構的數據, 當然在實際應用我們存儲的還是相同類型文
檔的集合. 這個特性其實可以在應用裏很靈活, 你不需要類似 alter table 語句來修改你
的數據結構
每次插入數據時候集合中都會有一個 ID, 名字叫 _id.
下面再加點數據:
> for( var i = 1; i < 10; i++ ) db.things.save( { x:4, j:i } ); > db.things.find();
{"name" : "mongo" , "_id" : ObjectId("497cf60751712cf7758fbdbb")}
{"x" : 3 , "_id" : ObjectId("497cf61651712cf7758fbdbc")}
{"x" : 4 , "j" : 1 , "_id" : ObjectId("497cf87151712cf7758fbdbd")}
{"x" : 4 , "j" : 2 , "_id" : ObjectId("497cf87151712cf7758fbdbe")}
{"x" : 4 , "j" : 3 , "_id" : ObjectId("497cf87151712cf7758fbdbf")}
{"x" : 4 , "j" : 4 , "_id" : ObjectId("497cf87151712cf7758fbdc0")}
{"x" : 4 , "j" : 5 , "_id" : ObjectId("497cf87151712cf7758fbdc1")}
{"x" : 4 , "j" : 6 , "_id" : ObjectId("497cf87151712cf7758fbdc2")}
{"x" : 4 , "j" : 7 , "_id" : ObjectId("497cf87151712cf7758fbdc3")}
{"x" : 4 , "j" : 8 , "_id" : ObjectId("497cf87151712cf7758fbdc4")}
請注意一下, 這裏循環次數是 10, 但是隻顯示到第 8 , 還有 2 條數據沒有顯示. 如果想繼
續查詢下面的數據只需要使用”it”命令, 就會繼續顯示下面的數據:
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "x" : 4, "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 }
has more
> it
{ "_id" : ObjectId("4c220a42f3924d31102bd868"), "x" : 4, "j" : 19 }
{ "_id" : ObjectId("4c220a42f3924d31102bd869"), "x" : 4, "j" : 20 }



MongoDB 支持的數據類型中, _id 是其自有產物,下面對其做些簡單的介紹。
存儲在 MongoDB 集合中的每個文檔( document)都有一個默認的主鍵_id,這個主鍵名稱是
固定的,它可以是 MongoDB 支持的任何數據類型,默認是 ObjectId。在關係數據庫 schema
設計中,主鍵大多是數值型的,比如常用的 int long,並且更通常的是主鍵的取值由數據
庫自增獲得,這種主鍵數值的有序性有時也表明了某種邏輯。反觀 MongoDB,它在設計之
初就定位於分佈式存儲系統,所以它原生的不支持自增主鍵。
_id key 舉例說明 :
當我們在往一個集合中寫入一條文檔時,系統會自動生成一個名爲_id key.如:
> db.c1.find()
{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }
 
這裏多出了一個類型爲 ObjectId key ,在插入時並沒有指定,這有點類似 Oracle rowid
的信息,屬於自動生成的。
MongoDB 中,每一個集合都必須有一個叫做_id 的字段,字段類型默認是 ObjectId ,換句話
說,字段類型可以不是 ObjectId,例如:
> db.c1.find()
{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }
{ "_id" : 3, "name" : "Bill", "age" : 55 }
雖然_id 的類型可以自由指定,但是在同一個集合中必須唯一,如果插入重複的值的話,系統
將會拋出異常,具體如下:
> db.c1.insert({_id:3, name:"Bill_new", age:55})
E11000 duplicate key error index: test.c1.$_id_ dup key: { : 3.0 }
>
因爲前面已經插入了一條_id=3 的記錄,所以再插入相同的文檔就不允許了。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章