看了些資料,對應只需要知道怎么查詢和使用mongodb的我來說,這些足夠啦。
左邊是mongodb查詢語句,右邊是sql語句。對照著用,挺方便。
db.users.find() select?*?from?users
db.users.find({"age"?:?27}) select?*?from?users?where?age?=?27
db.users.find({"username"?:?"joe",?"age"?:?27}) select?*?from?users?where?"username"?=?"joe"?and?age?=?27
db.users.find({},?{"username"?:?1,?"email"?:?1}) select?username,?email?from?users
db.users.find({},?{"username"?:?1,?"_id"?:?0}) //?no?case??//? 即時加上了列篩選, _id 也會返回;必須顯式的阻止 _id 返回
db.users.find({"age"?:?{"$gte"?:?18,?"$lte"?:?30}}) select?*?from?users?where?age?>=18?and?age?<=?30 //?$lt(<)?$lte(<=)?$gt(>)?$gte(>=)
db.users.find({"username"?:?{"$ne"?:?"joe"}}) select?*?from?users?where?username?<>?"joe"
db.users.find({"ticket_no"?:?{"$in"?:?[725,?542,?390]}}) select?*?from?users?where?ticket_no?in?(725,?542,?390)
db.users.find({"ticket_no"?:?{"$nin"?:?[725,?542,?390]}}) select?*?from?users?where?ticket_no?not?in?(725,?542,?390)
db.users.find({"$or"?:?[{"ticket_no"?:?725},?{"winner"?:?true}]}) select?*?form?users?where?ticket_no?=?725?or?winner?=?true
db.users.find({"id_num"?:?{"$mod"?:?[5,?1]}}) select?*?from?users?where?(id_num?mod?5)?=?1
db.users.find({"$not":?{"age"?:?27}}) select?*?from?users?where?not?(age?=?27)
db.users.find({"username"?:?{"$in"?:?[null],?"$exists"?:?true}}) select?*?from?users?where?username?is?null //? 如果直接通過 find({"username"?:?null}) 進行查詢,那么連帶 " 沒有 username" 的紀錄一并篩選出來
db.users.find({"name"?:?/joey?/i}) //? 正則查詢, value 是符合 PCRE 的表達式
db.food.find({fruit?:?{$all?:?["apple",?"banana"]}}) //? 對數組的查詢 ,? 字段 fruit 中,既包含 "apple", 又包含 "banana" 的紀錄
db.food.find({"fruit.2"?:?"peach"}) //? 對數組的查詢 ,? 字段 fruit 中,第 3 個 ( 從 0 開始 ) 元素是 peach 的紀錄
db.food.find({"fruit"?:?{"$size"?:?3}}) //? 對數組的查詢 ,? 查詢數組元素個數是 3 的記錄, $size 前面無法和其他的操作符復合使用
db.users.findOne(criteria,?{"comments"?:?{"$slice"?:?10}}) //? 對數組的查詢,只返回數組 comments 中的前十條,還可以 {"$slice"?:?-10} ,? {"$slice"?:?[23,?10]};? 分別返回最后 10 條,和中間 10 條
db.people.find({"name.first"?:?"Joe",?"name.last"?:?"Schmoe"})??//? 嵌套查詢
db.blog.find({"comments"?:?{"$elemMatch"?:?{"author"?:?"joe",?"score"?:?{"$gte"?:?5}}}}) //? 嵌套查詢,僅當嵌套的元素是數組時使用 ,
db.foo.find({"$where"?:?"this.x?+?this.y?==?10"}) //? 復雜的查詢, $where 當然是非常方便的,但效率低下。對于復雜查詢,考慮的順序應當是?正則? ->?MapReduce?->?$where
db.foo.find({"$where"?:?"function()?{?return?this.x?+?this.y?==?10;?}"}) //?$where 可以支持 javascript 函數作為查詢條件
db.foo.find().sort({"x"?:?1}).limit(1).skip(10); //? 返回第 (10,?11] 條,按 "x" 進行排序 ;? 三個 limit 的順序是任意的,應該盡量避免 skip 中使用 large-number
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
