Mongodb基本操作入門,增刪改查和索引
主要進程
mongod.exe為啟動數據庫實例的進程。
mongo是一個與mongod進程進行交互的JavaScript shell進程,它提供了一些交互的接口函數用戶對數據庫的管理。
基本命令
show databases; 查詢數據庫列表
show collections; 查詢全部的集合 相應關系型數據庫的表
use test; 數據庫切換 切換到test數據庫
mongodb數據庫記錄成為文檔
插入文檔命令
db.customers.save({name:"張三",age:15,address:‘北京東城"}); 向集合customer庫插入一個文檔
for(var i=1;i<=100;i++) db.customers.save({name:"張三"+i,age:i,telephone:"1861400275"+i}); 批量插入100個文檔
查詢選擇器
db.customers.find();
db.customers.find({name:"張三11‘});
db.customers.find({age:{$lt:45}}); keyword $lt less than 小於
$lte 小於等於 less than equals
$gt 大於 greater than
$gte 大於等於 greate than equals
db.customer.find({age:{$lt:45,$gt:35}});
db.customer.find({age:{$in:[34,35,36]}}); $in 值在範圍內 $nin 值不在範圍內
db.customer.find({age:{$ne:50}}); $ne keyword的值不等於
db.customer.find({$or:[{age:{$lt:5},{name:"zhangsan"}}]}); $or 或 age小於5或name等於zhangsan
db.customer.find({$and:[{age:{$lt:5},{name:"zhangsan"}}]}); $and 且 兩個條件同一時候滿足
db.customer.find({id:{$exists:false}}); 等價於 db.customer.find({id:null});
MongoDB表結構是不固定的,有時須要返回包括某個字段的全部記錄或不包括的
查詢投射
查詢的結果集返回指定的字段
db.customer.find({age:{$lt:10}},{_id:0,id:1,name:1}); _id:0 表示不返回_id
第一個{}內為查詢選擇器。第二個{}為對前面返回的結果集進行進一步過濾的條件,即投射項。
db.customer.find().skip(10).limit(5).sort(id:-1); 跳過前十條,取五條,id:-1表示降序排列
數組操作
文檔的屬性為數組 AttributeValue:["收腰型","修身型","直筒型","寬松型"]
db.DictGoodsAttribute.find({"AtributeValue":"收腰型"}); 僅僅要屬性中包括該值,就能返回
匹配數組中指定位置的元素值
db.DictGoodsAttribute.find({"AttributeValue.0":"收腰型"}); 第一個屬性值為"收腰型"
增該刪操作
添加記錄 db.customer.save();
1.第一次插入數據時,不須要預先創建集合,插入數據時會自己主動創建
2.插入時會默認創建主鍵_id,類型為ObjectId類型,這樣設計為了更好地支持分布式存儲
3._id插入時復制不能反復
改動語句 條件 賦值
db.customer.update(query,update,<upsert>,<multi>);
query為過濾條件 update為賦值 若僅僅包括字段,不包括操作項,則會發生代替性更改
upsert 可選參數 boolean類型 默覺得false,更新匹配記錄,找不到則插入新的文檔到集合,插入新記錄
multi 可選參數 boolean類型 默覺得false。更新匹配到的第一個文檔,當為true時,更新全部匹配的文檔
db.customer.update({id:5},{$set:{name:"zhangsan"}},{upsert:true},{multi:true});
刪除語句
db.customer.remove({name:"zhangsan"}); 刪除全部 name:zhangsan的文檔
db.customer.remove({name:"zhangsan"},1); 刪除第一個匹配文檔
db.customer.remove({}); 刪除全部文檔。但不刪除相應的索引集合,文檔對象也會從相應的數據文件裏刪去
索引
和關系型數據庫一樣,索引的主要作用:提高數據獲取的性能
MongodDB的數據結構也是B+樹
單字段索引
db.customer.ensuerIndex({name:1},{unique:true}); 字段name創建索引,unique 說明是唯一索引
唯一索引創建成功後,會在對應的數據庫系統集合system.indexes添加一條索引記錄
db.system.indexes.find() 查看全部索引
db.customer.find({name:"zhangsan"}).explain();能夠使用explain()查詢分析函數查看添加索引後查詢比較
符合索引
db.customer.find({name:1,age:1}); 在兩個字段上進行索引
未使用索引,選擇器 explain函數解析結果
在字段name上加入索引。explain解析結果
對一個值為數組類型的字段創建索引。默認對數組中的每個元素創建索引
AttributeValue:["0-99","100-299","300-499"] 此時創建的索引為全部元素索引
元素為嵌套文檔 statusInfo:[{status:9,desc:"已取消"},{status:10,desc:"已發貨"}]
為單個字段創建索引 ensureIndex({"statusInfo.desc":1});
索引的刪除
db.customer.dropIndex("_name"); 參數為索引名
Mongodb基本操作入門,增刪改查和索引