1. 程式人生 > 資料庫 >2.1深入MongoDB Shell(增刪改查命令)

2.1深入MongoDB Shell(增刪改查命令)

2.1.2資料庫、集合和文件
MongoDB的集合與關係型資料庫中的表類似。MongoDB把集合分別儲存在不同的資料庫中。與傳統的SQL資料庫不同,MongoDB的資料庫只區分集合的名稱空間。要查詢MongoDB資料庫,需要知道儲存文件資料的資料庫和集合的名字。如果開始沒有指定資料庫,shell會選擇預設的test資料庫。
選擇資料庫
> use tutorial

2.1.3寫入和查詢
寫入
> db.users.insert({username:"smith"})
查詢
db.users.find();
db.users.find({username:"jones});
db.users.find({ _id:"1",username:"jones"});
db.users.find({ $or:[{username:"smith"},{username:"jones"}]});
db.users.find({ $and:[{_id:"1"},{username:"jones"}]})

2.1.4更新文件
更新單個文件
db.users.update({username:"smith"},{$set:{country:"Canada"}})
刪除欄位
db.user.update({username:"smith"},{$unset:{country:1}})
替換更新文件
db.users.update({username:"smith"},{country:"Japen"})
資料變化:

{ "_id" : ObjectId("5fd9bec6bb0873560ed4ffd4"), "username" : "smith", "country" : "Canada" }

--

{ "_id" : ObjectId("5fd9c7debb0873560ed4ffd4"), "country" : "Japen" }

id相同,但是資料已經被替換為新的文件。當確定是新增或者修改資料而不是替換整個文件時,應該使用$set操作符


更新複雜資料
db.users.update( {username:"smith"},
 {$set:{
     favories:{
         cities:["tokyo","hangzhou"],
         movies:["Casablanca"]
     }
 }})
    
db.users.update( {username:"jones"},
 {$set:{
     favories:{
         movies:["Casablanca","your name"]
     }
 }})
高階更新
db.users.update( {"favories.movies":"Casablanca"},
	{$addToSet:{"favories.movies":"The Maltese Falcon"}},
	false,
	true)
第一個引數是查詢條件。第二個引數使用$addToSet新增The Maltese Falcon到列表中。第三個引數false,控制是否允許upsert。這個命令告訴更新操作,當一個文件不存在的時候是否插入它,這取決於更新操作是操作符更新還是替換更新。第四個引數true,表示是否是多個更新。預設情況下,MongoDB更新只針對第一個匹配的文件。如果想更新所有匹配的文件,就必須顯示指定這個引數。
$addToSet和$push
這兩個命令都是往陣列中新增資料,但是$addToSet是唯一的,阻止了重複的資料。
2.1.5刪除資料
刪除資料
db.users.remove({"favories.cities":"hanzhou"})
db.users.drop()
remove操作不會刪除集合,只會刪除集合中某個文件。我們可以把它和SQL中的delete命令進行類比。如果要刪除集合和附帶的索引資料,可以使用drop方法。