1. 程式人生 > 其它 >14-12.18 用動畫延遲用CSS實現輪播(animation-delay與動畫程序百分比))

14-12.18 用動畫延遲用CSS實現輪播(animation-delay與動畫程序百分比))

Mongodb的的增刪改查


1. mongodb插入資料

命令:db.集合名稱.insert(document)


db.stu.insert({name:'gj', gender:1})
db.stu.insert({_id:"20170101", name:'gj', gender:1})

插文件時,如果不指定_id引數,MongoDB會為文件自動分配一個唯一的ObjectId

2. mongodb的儲存

命令:db.集合名稱.save(document)


db.stu.save({_id:'20170101', name:'gj', gender:2})
db.stu.save({name:'gj', gender:2})
db.stu.find()

如果文件的id已經存在則修改,如果id不存在則新增

3 mongodb的查詢

命令:db.集合名稱.find()

可以使用以下資料進行練習


db.stu.insert([{"name" : "郭靖", "hometown" : "蒙古", "age" : 20, "gender" : true },
{"name" : "黃蓉", "hometown" : "桃花島", "age" : 18, "gender" : false },
{"name" : "華箏", "hometown" : "蒙古", "age" : 18, "gender" : false },
{"name" : "黃藥師", "hometown" : "桃花島", "age" : 40, "gender" : true },
{"name" : "段譽", "hometown" : "大理", "age" : 16, "gender" : true },
{"name" : "段王爺", "hometown" : "大理", "age" : 45, "gender" : true },
{"name" : "洪七公", "hometown" : "華箏", "age" : 18, "gender" : true }])

3.1 簡單查詢

  • 方法find(): 查詢

    db.集合名稱.find({條件文件})

  • 方法findOne():查詢,只返回第一個

    db.集合名稱.findOne({條件文件})

  • 方法pretty(): 將結果格式化;不能和findOne()一起使用!

    db.集合名稱.find({條件文件}).pretty()

3.2 比較運算子

  • 等於: 預設是等於判斷, 沒有運算子

  • 小於:$lt (less than)

  • 小於等於:$lte (less than equal)

  • 大於:$gt (greater than)

  • 大於等於:$gte

  • 不等於:$ne


查詢年齡大於18的所有學生
db.stu.find({age:{$gte:18}})

3.3 邏輯運算子

邏輯運算子主要指與、或邏輯

  • and:在json中寫多個條件即可


查詢年齡大於或等於18, 並且性別為true的學生
db.stu.find({age:{$gte:18},gender:true})
  • or:使用$or, 值為陣列, 陣列中每個元素為json


查詢年齡大於18, 或性別為false的學生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})

查詢年齡大於18或性別為男生, 並且姓名是郭靖
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})

3.4 範圍運算子

使用$in$nin 判斷資料是否在某個陣列內


查詢年齡為18、 28的學生
db.stu.find({age:{$in:[18,28,38]}})

3.5 支援正則表示式

使用$regex編寫正則表示式


查詢name以'黃'開頭的資料
db.stu.find({name:{$regex:'^黃'}})

3.6 自定義查詢

mongo shell 是一個js的執行環境使用$where 寫一個函式, 返回滿足條件的資料


查詢年齡大於30的學生
db.stu.find({
$where:function() {
return this.age>30;}
})

3.7 skip和limit

  • 方法limit(): 用於讀取指定數量的文件


db.集合名稱.find().limit(NUMBER)
查詢2條學生資訊
db.stu.find().limit(2)
  • 方法skip(): 用於跳過指定數量的⽂檔


db.集合名稱.find().skip(NUMBER)
db.stu.find().skip(2)
  • 同時使用


db.stu.find().limit(4).skip(5)
db.stu.find().skip(5).limit(4)

注意:先使用skip在使用limit的效率要高於前者

3.8 投影

在查詢到的返回結果中, 只選擇必要的欄位

命令:db.集合名稱.find({},{欄位名稱:1,...})

引數為欄位與值, 值為1表示顯示, 值為0不顯特別注意:

  • 對於_id列預設是顯示的, 如果不顯示需要明確設定為0

  • 對於其他不顯示的欄位不能設定為0

db.stu.find({},{_id:0,name:1,gender:1})

3.9 排序

方法sort(), 用於對查詢結果按照指定的欄位進行排序

命令:db.集合名稱.find().sort({欄位:1,...})

引數1為升序排列引數-1為降序排列


根據性別降序, 再根據年齡升序
db.stu.find().sort({gender:-1,age:1})

3.10 統計個數

方法count()用於統計結果集中文件條數

命令:db.集合名稱.find({條件}).count()命令:db.集合名稱.count({條件})


db.stu.find({gender:true}).count()
db.stu.count({age:{$gt:20},gender:true})

4 mongodb的更新


db.集合名稱.update({query}, {update}, {multi: boolean})
  • 引數query:查詢條件

  • 引數update:更新操作符

  • 引數multi:可選,預設是false,表示只更新找到的第一條資料,值為true表示把滿足條件的資料全部更新


db.stu.update({name:'hr'},{name:'mnc'}) # 全文件進行覆蓋更新
db.stu.update({name:'hr'},{$set:{name:'hys'}}) # 指定鍵值更新操作
db.stu.update({},{$set:{gender:0}},{multi:true}) # 更新全部

注意:"multi update only works with $ operators"

  • multi引數必須和$set一起使用!

5 mongodb的刪除


db.集合名稱.remove({query}, {justOne: boolean})
- 引數query:可選,刪除的⽂檔的條件
- 引數justOne:可選, 如果設為true或1,則只刪除一條,預設false,表示刪除全部

小結

  1. mongo shell中的增db.集合名.insert({資料})db.集合名.save({包含id的完整資料}) # 根據指定的id進行儲存,存在則更新,不存在則插入

  2. mongo shell中的刪db.集合名.remove({條件}, {justOne: true/false})

  3. mongo shell中的改db.集合名.update({條件}, {$set:{完整資料/部分欄位}}, {multi: true/false})

  4. mongo shell中的查db.集合名.find({條件}, {欄位投影})