標籤:查詢 構建 遊標對象 count 使用 自增 查詢條件 Regex padding
- $gt -- >
- $lt -- <
- $gte -- >=
- $lte -- <=
- $all 與 in 類似,不同的是必須滿足[]內所有的值
- $exists 欄位是否存在 db.sun.find({"age":{"$exists":true}}) 查詢存在age欄位的資料,null 欄位值為null和不存在查詢欄位的資料都會列出來 ,只查詢值null的資料 db.sun.find({"age":{"$in":[null],"$exists":true}}) 存在這個欄位並且值為null
- $mod 模數運算(等同於C# %取餘運算 10%3==1 ) db.sun.find({"age":{$mod:[10,0]}}) 欄位對10模數等於0的資料
- $ne 不等於 db.sun.find({"age":{"$ne":10}}) 查詢age欄位不等於10的欄位
- $in 包含操作,等同於SQL 的in操作 db.sun.find({"name":{"$in":["sun","2","sunxueyang"]}})
- $nin 不包含操作,等同於SQL not in 操作 db.sun.find({"name":{"$nin":["sun","2","sunxueyang"]}})
- $size 長度判斷。 db.sun.find({"like":{"$size":2}}) 擷取like數組長度是2的資料
- /Regex/ 查詢可以直接使用正則去處理 ,sun/=sun% /sun/=%sun% /sun=%sun
- $where 可以傳入查詢條件執行。 db.sun.find({"$where":"this.age>1"}) this在執行時代表當前行資料
- count() 擷取查詢數量
- skip(10) 取第10條往後的資料
- limit(5) 取查詢出來的5條件 等同於top 5 ,與skip組合就可以變成分頁查詢,db.sun.find().skip(10).limit(10) 如果每頁10條,這就是取的第2頁資料,db.sun.find().skip((2-1)*N).limit(N).sort(field:1) 排序,當資料量比較大的時候,效能會比較低,建議採用,建立一個自增欄位,分頁時計算自增欄位的最小數字,然後使用limit
- sort() 排序函數 sort({age:1,name:-1}) 組合排序,根據age正序,根據name倒序,注意:如果正序排時,欄位不存在的資料排在前面
- 相同屬性,實值型別不同時,排序次序為:
最小值
null
數字(整形、長整型、雙精確度)
字串
對象、文檔
數組
位元據
對象ID
布爾型
日期型
時間戳記
Regex
最大值
- distinct() 對指定欄位進行去重 db.runCommand({"distinct":"表名","key":"指定列"}) 等同於 db.sun.distinct("name")
db.gtb.group({ key:{age:1}, cond:{age:{$gt:2}}, reduce:function(){}, initial:{}}) 等同於 select age,count(1) from gtb group by age db.posts.group({ "key" : {"day" : true}, //根據key分組,結果顯示key "initial" : {"tags" : {}}, //初始化展示的tags文檔對象 "$reduce" : function (doc, prev) { //doc為當前行對象,prev為initial構建的對象 for (i in doc.tags) { //遍曆當前行的tags數組 if (doc.tags[i] in prev.tags) { //如果當前行tags數組裡面的資料存在於構建顯示的對象裡面,則進行統計+1,否則初始化為1 //“prev”則代表“累加器文檔”的累加狀態 prev.tags[doc.tags[i]]++; } else { prev.tags[doc.tags[i]] = 1; } } }, "finalize":function(prev){ //針對每次reduce結束之後,對累加器文檔進行操作 for(i in prev.tags) //保留當前累加器大於2的資料 { if(prev.tags[i]<2) { delete prev.tags[i]; } } }}) 等同於,先根據day時間分組,然後對分組之後得tags數組之內的內容進行統計,
var cur =db.posts.find(); //當前為查詢集合對象while(cur.hasNext()){print(cur.next()) //表示列印當前遊標對象} 等同於 cur.forEach(function(itm){print( itm )}) ,不同點為cur.next()是對象實體, itm 為對象引用
MongoDB--操作符