MongoDB學習筆記(二)_常用增刪改查命令
- 建立資料庫:use testdb
- 建立集合
- 固定集合:需要指定size。比如:
db.createCollection("mycol",{capped:true,autoIndexId:true,size:6142800,max:10000})
表示建立名為mycol的固定集合,以optionId作為索引,集合空間大小為6142800KB,最多儲存10000個文件。
- 直接插入資料,自動建立集合。
db.mycol.insert(name:"ljs_coding")
3.檢視集合:show collections
4.刪除集合:db.mycol.drop(),返回true表示刪除成功
5.插入文件:
- 直接插入資料:db.mycol.insert({name:"wust",password:"zz",location:"wuhan"})
- 先定義變數再插入:
document=({name:"wust",password:"zz",location:"wuhan"});
db.mycol.insert(document)
注意:此處定義有小括號有分號。
6.更新文件:
- update()方法
<query>相當於where,<update>相當於set,upsert控制無對應記錄時是否插入,multi控制是否多條更新,false表示只更新符合條件的第一條記錄。writeConcern控制丟擲異常的級別。
比如:db.mycol.update({name:"wust"},{$set:{password:"hh"}},false,true)將所有name為"wust"的記錄中password都改為"hh"。
db.mycol.update({name:"wust"},{$set:{password:"zz"}},true,true),由於此時已有name為"wust"的記錄,所以不會增加,結果為將所有記錄的password改為"zz"
db.mycol.update({name:"hust"},{$set:{password:"zz"}},true,true),由於此時沒有name為"hust"的記錄,所以新增一條。
注意:3.2版本之後提供updateOne()和updateMany()方法刪除單條和多條
- save()方法
用傳入的文件替換已有的文件。
7.刪除文件:deleteOne()和deleteMany()
比如:db.mycol.deleteOne({name:"wust"})和db.mycol.deleteMany({name:"wust"})
8.檢視文件:findOne()和find()
- find().pretty()以格式化資料返回所有文件,findOne()不包括該方法。
- 條件操作符:$lt,$lte,$gt,$gte,$ne,根據英文縮寫理解,不加以贅述。
比如:db.mycol.find({count:{$lt:10}}).pretty()格式化返回count<10的所有記錄。
- AND和OR
比如: db.mycol.find({password:"zz",$or:[{count:{$lt:0.0}},{count:{$gt:3.0}}]})返回的是password為"zz"且count<0或>3的所有記錄。
注意:一定要檢查大括號匹配,如果寫成了{password:"zz"},{$or:[{count:{$lt:0.0}},{count:{$gt:3.0}}]}就不是一條查詢語句了,查詢出的是password為zz的所有記錄,後面的限制條件失去作用,而且返回的也並非所有屬性,測試時只返回了_Id。
上圖也是同樣的錯誤,所以識別成了projection,都是粗心的小錯誤,注意避免。
- projection引數使用方法(限制返回哪些屬性),下圖來自菜鳥教程。
db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的鍵,不返回其他鍵 db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的鍵,返回其他鍵
db.collection.find(query, {_id:0, title: 1, by: 1}) // 正確
querydb.collection.find({}, {title: 1})
最後一種是不指定查詢條件的情況,需要指定projection。