1、 Create ( insert) 正則表達式
eg: mongodb
> info={"id":1,"name":"tom"}
{ "id" : 1, "name" : "tom" ,」age」:18}
> db.class.insert(info)
WriteResult({ "nInserted" : 1 })> db.class.find()
{ "_id" : ObjectId("5530dfac5be106fb1275d7d5"), "id" : 1, "name" : "tom" ,」age」:18} 數據庫
2、Read ( findOne/find ) 數組
eg: this
一、基本 spa
db.test.find({「id」: 1},{「name」: 1,」id」: 0}) // 第一個參數指定查詢條件,第二個參數指定顯示的文檔 索引
findOne() 方法結果是 符合查詢條件的第一條記錄,顯示效果比較好。看文檔的結構清晰 隊列
find() 獲得符合條件的全部的記錄 ci
二、查詢中用到的關係符 rem
<1>"$gt", "$gte", "$lt", "$lte", "$ne", //大於小於 不等於這些
eg: db.test.find({'age':{$gt:20}})
<2> "$or", "$in","$nin" // 與或非
db.test.find({'name':'kenn' , 'age:18}) // and 中間逗號隔開db.hlh.find({$or:[{'age':{$lt:25}},{'name':'lin'}]}) // or ,注意冒號 : ,or的條件用[ ]
db.test.find({'city':{$in:['sz','bj']}}) // in,注意中括號:[],$in needs an array
db.hlh.find({'name':{$nin:['lin']}}) //not in []
<3> 正則表達式條件,還不是很會用
db.hlh.find({$or:[{'name':/^l/},{'name':/n$/}]}) # l開頭或者n結尾
<4> $where 用法,where利用 value定位查詢
db.hlh.find({$where:function(){return this.name='lin'}}) # where:function(),格式
<5> 子文檔 查詢,用 點 符號 進入 子文檔
db.test.find({「addr.city」 : 」bj」})
3、Update (update)
eg:
<1> 總體更新
#db.test.update({"id":123},{"id":123,job:"teacher"}) #總體更新;先查到文檔,再更新爲後面的文檔
##>var mod=db.test.findOne({"name":"kenn"})
##>mod.age=40 #利用變量的總體更新
##>db.test.update({"name":"kenn"},mod)
<2>局部更新,利用修改器:$inc 和 $set
#eg:
# db.test.update({"name":"kenn"},{$inc:{"age":-30}}) #age 數值減30
# db.test.update({"name":"kenn"},{$set:{"age":30}}) #age 值直接設爲50
#db.mail.update({"_id" : ObjectId("54485c5d78e260df0b3499e2")},{$set:{"content":"thanks to your supporting"}})
<3>upsert 操做(若是條件查詢不到就新增一條);使用方法將update的 第三個參數設爲true
#db.test.update({"name":"lin"},{$set:{"age":50}},true) # 查找不到,直接添加新紀錄
#db.kill.update({},{$inc:{age:4}},true,true) # 沒有age的記錄直接默認從0加4
<4>批量更新,mongodb 若是匹配多條,默認只更新第一條。如需批量更新,只須要更改update的 第四個參數爲true
#eg:db.test.update({},{$set:{"passwd":456}},false,true)
#eg:db.board.update({},{$set:{"activity.numOfMonthRegister:" 3 }},false,true); #對子文檔的更新
#remove
#db.test.remove({"name":"lin"})
<5> $push 增長數組,不檢查重複性。能夠用$addToSet ,添加劇復的話只保存一個值
db.hlh.update({'name':'lin'},{$push:{companies:'alibaba'}})
db.hlh.update({'name':'lin'},{$push:{companies:'sina'}})
db.hlh.update({'name':'lin'},{$addToSet:{companies:'sina'}}) #添加不重複的值
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "age" : 16, "companies" : [ "alibaba","sina"]}
<6> $pop 從數組中移出數據,數據相似隊列。{$pop:{key:1}}將從隊列末尾移除元素,使用{$pop:{key:-1}}將從隊列開頭移除元素
db.hlh.update({'name':'lin'},{$pop:{companies:1}}) #刪除數組中最後一個數據
<7> $pull (相似 $pop) 刪除數組中的元素
db.hlh.update({},{$pull:{companies:'sina'}})
<8> save ,如文檔中包含_id,save 和insert 功能相同;如包含_id,則save和upsert功能相同
db.hlh.save({count:24}) #直接插入了一個新的文檔
db.hlh.save({"_id" : ObjectId("510f1b718474cd8af024e2d0"),count:44}) #指定文檔的count值改爲44
4、Delete (remove)
eg:
db.test.remove({「name」: 「sam」}); //加入條件,不然是全刪
5、索引建立
// pid 爲key 值, 1 表示升序, 後面的backgroup 是將建立放到後臺運行(如數據大,耗時)
db.test({pid:1},{backgroud:true});
6、 用戶管理設置
// admin 庫下的用戶是全局用戶,對全部數據庫可讀寫
db.addUser("username","passwd",true) // true 參數表示只可讀
db.system.users.find() // 查看用戶
db.auth("username","passwd") //驗證