mongodb的簡單操作
阿新 • • 發佈:2018-12-24
使用mongodb也有一段時間了,有過其他資料庫使用經驗的人會發現mongodb上手很簡單。個人覺得需要注意的,是關於mongodb的一些修改器的使用。
為了操作演示,先來建立一個數據表
> db.contact.insert({"phone":[{"number":"12345678912","place":"chengdu"},{"number":"12345678913","place":"chengdu"}],"createtime":1440075592})
檢視資料表
> db.contact.find() { "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456 78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" } ], "createtime" : 1440075592 }
此時開始我們的修改器操作:
1、$inc
修改器 $inc 可以對資料表中摸個為數字型的鍵進行增減的操作。
> db.contact.update({"createtime":1440075592},{"$inc":{"createtime":1}})
檢視資料表
可見,createtime 鍵值增加 1.當然,要減去的話只需要把1換為負數即可。> db.contact.find() { "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456 78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" } ], "createtime" : 1440075593}
2、$set
$set 用來指定一個鍵並更新鍵值,如果指定的鍵不存在,則會建立該鍵。
> db.contact.update({"createtime":1440075593},{"$set":{"createtime":1}})
檢視資料表
可見,createtime 鍵值設定為 1。> db.contact.find() { "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456 78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" } ], "createtime" : 1}
再指定一個不存在的鍵值
> db.contact.update({"createtime":1},{"$set":{"updatetime":1}})
檢視資料表
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
], "createtime" : 1, "updatetime" : 1 }
增加了 “updatetime”鍵,並設定鍵值為1.
3、$unset
$unset 用來刪除指定的鍵
> db.contact.update({"createtime":1},{"$unset":{"updatetime":1}})
檢視資料表
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
], "createtime" : 1 }
刪除了鍵 “updatetime”,此處對目標鍵使用任何具體的鍵值都可以刪除該目標鍵。
4、$push
$push 向資料表中的某個陣列型別的鍵新增一個數組元素,不過濾重複的資料。若鍵不存在,則建立陣列型別的鍵。
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678914","place":"chengdu"}}})
檢視資料表
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
, { "number" : "12345678914", "place" : "chengdu" } ], "createtime" : 1, }
“phone”鍵中添加了一個數據項。
再指定一個不存在的型別為陣列的鍵
> db.contact.update({"createtime":1},{"$push":{"email":"[email protected]"}})
看看資料表
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
, { "number" : "12345678914", "place" : "chengdu" } ], "createtime" : 1, "email"
: [ "[email protected]" ] }
添加了“email”鍵,並設定了指定的鍵值。
5、$addToSet
$addToSet 類似 $push ,都是給陣列型別鍵值新增一個元素時,但是 $addToSet 能夠避免在陣列中產生重複資料。
6、$pull
$pull 對資料表中的某個陣列型別的鍵刪除一個數組元素
> db.contact.update({"createtime":1},{"$pull":{"phone":{"number":"12345678914"}}})
檢視資料表
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
], "createtime" : 1, "email" : [ "[email protected]" ] }
可見,刪除了指定的資料項
7、$pop
$pop 跟 $pull 都是陣列修改器,但是 $pop 只是從陣列的頭或者尾刪除陣列中的元素
先插入幾個資料
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678914","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678915","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678916","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678917","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
此時
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
, { "number" : "12345678914", "place" : "chengdu" }, { "number" : "12345678915",
"place" : "chengdu" }, { "number" : "12345678916", "place" : "chengdu" }, { "nu
mber" : "12345678917", "place" : "chengdu" } ], "createtime" : 1, "email" : [ "1
[email protected]" ] }
執行
> db.contact.update({"createtime":1},{"$pop":{"phone":-1}})
得到
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78913", "place" : "chengdu" }, { "number" : "12345678914", "place" : "chengdu" }
, { "number" : "12345678915", "place" : "chengdu" }, { "number" : "12345678916",
"place" : "chengdu" }, { "number" : "12345678917", "place" : "chengdu" } ], "cr
eatetime" : 1, "email" : [ "[email protected]" ] }
操作結果,從頭部刪除了資料項
再次執行
> db.contact.update({"createtime":1},{"$pop":{"phone":1}})
得到
> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78913", "place" : "chengdu" }, { "number" : "12345678914", "place" : "chengdu" }
, { "number" : "12345678915", "place" : "chengdu" }, { "number" : "12345678916",
"place" : "chengdu" } ], "createtime" : 1, "email" : [ "[email protected]" ] }
操作結果,從尾部刪除了資料項其實,“phone”對應鍵值為正數則從尾部刪除,為負數則從頭部刪除