MongoDB的增刪改查
增刪改查的高階應用
Capped Collection(固定集合)
GridFS 大檔案上傳或下載
1: insert
MongoDB是面向文件儲存的資料庫,文件結構形式叫BSON(類似JSON)
db.testdb.insert({name:"user1"});
s//save()如果已經存在就不會插入,如果不存在就插入
//這裡要與id相同的值才不會被插入
//save就是id相同就更新,沒有相同id就插入
刪除
db.c1.remove();
db.c1.remove({name:"user1"});
db.c1.find({name:"user1"},{name:1, age:1, _id:0});
條件表示式
< <= > >= !=
$gt: 大於
$lt: 小於
$gte: 大於等於
$lte: 小於等於
$ne: 不等於
統計:
db.c1.count();
db.c1.find().count();
//count(1); 裡面有一個條件,如果為1,那麼會取條件,如果為0不會理會條件語句
排序:
db.c1.find().sort(age:1); //1是升序 0是降序
取多少個
db.c1.find().limit(4);
跳過幾個
db.c1.skip(1);
db.c1.skip(0).limit(10).sort({age:-1});
$all
操作類似於$in操作,但是不同的是,$all操作要求陣列裡面的值全部是包含在返回的記錄裡面
db.c2.find({post:{$all:[1,2,3]}});
$exists
操作檢查一個欄位是否存在
db.c2.find({age:{$exists:1}}); 測試一個欄位是否存在
$mod
操作可以讓我們簡單的進行取模操作,而不需要用到where子句
//這裡的是欄位值的取餘操作
db.c1.find({age:{$mod:[2]}});
$in 操作類似於傳統關聯式資料庫中的IN
db.c1.find({age:{$in:[1,2,3]}})
$nin 與$in相反
db.c1.find({age:{$nin:[2,3,4]}});
$or 檢視指定多個條件的記錄,跟sql的or差不多
db.c1.find({$or:[{name:"user1"},{name:"user2"},{age:10}]});
$nor 與$or相反過濾指定的條件
db.c1.find({$nor:[{name:"user1"},{name:"user2"},{age:10}]});
學習內容:
1.mongodb增加操作
2.mongodb刪除操作
3.mongodb查詢操作
增刪改查的高階應用
Capped Collection(固定集合)
GridFS 大檔案上傳或下載
1: insert
MongoDB是面向文件儲存的資料庫,文件結構形式叫BSON(類似JSON)
db.c1.insert({name:"user1"});
db.c1.save({_id:1, name:"user1"}); //save()如果已經存在就不會插入,如果不存在就插入
//這裡要與id相同的值才不會被插入
//save就是id相同就更新,沒有相同id就插入
刪除
db.c1.remove();
db.c1.remove({name:"user1"});
db.c1.find({name:"user1"},{name:1, age:1, _id:0});
條件表示式
< <= > >= !=
$gt: 大於
$lt: 小於
$gte: 大於等於
$lte: 小於等於
$ne: 不等於
統計:
db.c1.count();
db.c1.find().count();
//count(1); 裡面有一個條件,如果為1,那麼會取條件,如果為0不會理會條件語句
排序:
db.c1.find().sort(age:1); //1是升序 0是降序
取多少個
db.c1.find().limit(4);
跳過幾個
db.c1.skip(1);
db.c1.skip(0).limit(10).sort({age:-1});
$all
操作類似於$in操作,但是不同的是,$all操作要求陣列裡面的值全部是包含在返回的記錄裡面
db.c2.find({post:{$all:[1,2,3]}});
$exists
操作檢查一個欄位是否存在
db.c2.find({age:{$exists:1}}); 測試一個欄位是否存在
$mod
操作可以讓我們簡單的進行取模操作,而不需要用到where子句
//這裡的是欄位值的取餘操作
db.c1.find({age:{$mod:[2]}});
$in 操作類似於傳統關聯式資料庫中的IN
db.c1.find({age:{$in:[1,2,3]}})
$nin 與$in相反
db.c1.find({age:{$nin:[2,3,4]}});
$or 檢視指定多個條件的記錄,跟sql的or差不多
db.c1.find({$or:[{name:"user1"},{name:"user2"},{age:10}]});
$nor 與$or相反過濾指定的條件
db.c1.find({$nor:[{name:"user1"},{name:"user2"},{age:10}]});
$size
操作將會查詢陣列長度等於輸入引數的陣列
$elemMatch 元素配置的意思
slaveOk
當我們在replica set進行檢索操作時,預設的路由會選擇master機器,當我們需要針對任意的從機進行查詢的時候,我們需要開啟slaveOk選項。當我們在沒有開啟salveOk選項的時候,如果進行此操作會報如下錯: *** not master and slaveok=false
所以我們要進行如下操作: rs.slaveOk(); // enable querying a secondary db.users.find(...)
11) Cursors遊標及Cursor Methods
遍歷遊標
var x = db.c1.find();
x.next();
x.hasNext();
while(x.hasNext() == true){
x.next();
}
NULL查詢(有一個值是為null,或者一個值不存在)
db.c4.find({age:null}); //列出所有為null或者不存在的值
db.c4.find({age:{$type:10}}); //列出所有為null的資料
第二種寫法
db.c4.find({age:{$exists:1, $in:[null]}});
//兩個條件,一個是exists必須存在,二是為null的資料
$slice
4. Update
1) 語法 db.collection.update( criteria, objNew, upsert, multi )
引數說明: Criteria:用於設定查詢條件的物件 Objnew:用於設定更新內容的物件 Upsert:如果記錄已經存在,更新它,否則新增一個記錄 Multi:如果有多個符合條件的記錄,全部更新 注意:預設情況下,只會更新第一個符合條件的記錄
$set //修改欄位
db.c5.update({name:"user1"},{$set:{age:10}},0,1);
$inc //對欄位進行加 a = a+1
db.c5.update({},{$inc:{age:-10}},0,1);
$unset //刪除一個欄位
db.c5.update({},{$unset:{age:1}});
$push
db.c5.update({},{$push:{arr:1}}); //壓入一個值進入陣列
$pushAll
db.c5.update({}, {$pushAll:{arr:[2,3,4]}}); //壓入多個值進入陣列
$pop
db.c5.update({}, {$pop:{arr:1}}); //彈出陣列中的最後一個元素
db.c5.update({}, {$pop:{arr:1}}); //彈出陣列中的第一個元素
$addToSet
語句: {$addToSet: {field: value}}
如果filed是一個已經存在的陣列,並且value值不在其中,那麼value加入到陣列中
filed不存在,那麼把value當成一個陣列儲存到filed中
filed是一個已經存在的非陣列型別,那麼將會報錯
擴充套件肜戶
{$addToSet:{a:{$each:[1,2,3,4,5,6]}}};
$pull
語法:{$pull:{field:_value}}
功能: 如果field是一個陣列,那麼刪除符合_value檢索條件的記錄
如果field是一個已經存在的非陣列,那麼會報錯
$pullAll
語法: {$pullAll:{field:value_array}}
功能: 同$pull類似,只是value的資料型別是一個陣列
$rename
語法:{$rename:{old_field_name: new_field_name}}
功能:重新命名指定的欄位名稱
特殊運算子:$
$運算子程式碼查詢記錄中第一個匹配條件的記錄項
$db.c5.update({"arr.title":"linx"}, {$set:{arr.$.title:"I lover linx"}});
注意: 在陣列中用$配合$unset運算子的時候,效果不是刪除的元素,而是把匹配的元素變成null
$db.c5.update({"arr.title":"php"},{$unset:{arr.$:1}});
var x = db.c1.findOne({"user":"user1"});
x.age = 40;
x.nickname="xlc";
db.c1.save(x);
效能監控
透過對資料庫的效能監控,能夠更好的瞭解資料庫的工作狀態,從頁進行最佳化
介紹幾個效能監控的工具
Mongofniff
此工具可以從底層監控到底有那些命訟傳送給MongoDB去執行
./mongosniff --soruce NET lo
它是實時動態監視的,需要開啟中一個客戶端進行命訟操作,可以將這些資料輸出到一個日誌檔案中,那麼就可以保留下所有資料庫操作的歷史記錄,對於後期的效能分析和安全審計工作將是一個巨大的貢獻
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-2123014/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mongodb 基本增刪改查MongoDB
- MongoDB增刪改查操作MongoDB
- PHP操作MongoDB(增刪改查)PHPMongoDB
- JavaAPI操作MongoDB--基本增刪改查JavaAPIMongoDB
- 關於mongodb資料庫的增刪改查MongoDB資料庫
- MongoDB入門(介紹、安裝、增刪改查)MongoDB
- 增刪改查
- 列表的增刪改查
- 字典的增刪改查
- layui的增刪改查UI
- mybatis的增刪改查MyBatis
- redist的增刪改查Redis
- webpack4+express+mongodb+vue 實現增刪改查WebExpressMongoDBVue
- python 連線mongodb實現增刪改查例項PythonMongoDB
- spring data mongodb 如何以事物的方式進行增刪改查SpringMongoDB
- SQL增刪改查SQL
- Mongoose查增改刪Go
- indexedDB 增刪改查Index
- mysql增刪改查MySql
- 使用express+mongoose對mongodb實現增刪改查操作ExpressMongoDB
- express+mongodb+vue實現增刪改查-全棧之路ExpressMongoDBVue全棧
- 單表增刪改查
- EFCore之增刪改查
- sql指令,增,刪,查,改SQL
- mysql基本增刪改查MySql
- express+mongodb+vue實現增刪改查-全棧之路2.0ExpressMongoDBVue全棧
- MongoDB基本增刪改查操作-基於Node.JS驅動MongoDBNode.js
- 02-CoreData 的增刪改查
- cobra.Command的增刪改查
- iOS CoreData (一) 增刪改查iOS
- Jfinal+layui增刪改查UI
- SQL 基礎增、刪、改、查SQL
- elasticsearch7.2增刪改查Elasticsearch
- [express+mongoose](增刪改查)ExpressGo
- CoreData - 簡單 增刪改查
- C# SqlSugar增刪改查C#SqlSugar
- rust sqlx 使用---增刪改查RustSQL
- JavaWeb中jdbc增刪查改JavaWebJDBC
- js實現表格的增刪改查JS