亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

十天掌握MongoDB之三:學會Find

2020-03-14 13:23:25
字體:
來源:轉載
供稿:網友

我們先來看看下面的表格

作用 SQL MongoDB
查詢所有記錄 SELECT * FROM users db.users.find()
查詢age=33的記錄 SELECT * FROM users WHERE age=33 db.users.find({age:33})
子鍵(字段)篩選 SELECT a, b FROM users WHERE age=33 db.users.find({age:33}, {a:1,b:1})
排序 SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1})
比大小 SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33}})})
正則(模糊匹配) SELECT * FROM users WHERE name LIKE "Joe%" db.users.find({name:/^Joe/})
忽略、限制 SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20)
Or操作 SELECT * FROM users WHERE a=1 or b=2 db.users.find({$or:[ {a:1} , {b:2}] })
僅返回1條(TOP 1) SELECT * FROM users LIMIT 1 db.users.findOne()
Distinct聚合 SELECT DISTINCT last_name FROM users db.users.distinct('last_name')
Count聚合 SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count()
查詢計劃 EXPLAIN SELECT * FROM users WHERE z=3 db.users.find({z:3}).explain()

子鍵篩選

子鍵篩選也就是我們在 SQL 數據庫中見怪不怪的字段篩選。然而,由于MongoDB 采用的是基于 Json 的查詢語句,所以其子鍵篩選顯得非常怪異(限于篇幅,請留意示例代碼中的注釋):

// 包含所有子鍵

db.users.find({age:33})

// 僅包含子鍵:_id、a、b

db.users.find({age:33}, {a:1, b:1});

// 僅包含子鍵:_id、a

db.users.find({age:33}, {a:1, });

// 僅包含子鍵(這里給出了剔除_id的方法):a

db.users.find({age:33}, {a:1, b:0, });

復雜查詢

MongoDB 可以支持一些比較操作(大于小于)、子句( or )、取反( not )等查詢,同樣的,請觀察示例代碼:

// 實際上它們都是查詢操作符!

// 返回年齡大于等于33歲,且小于40歲的用戶:

db.users.find({ age: { ‘$gte’ : 33, ‘$lt’ : 40 } });

// 返回年齡大于33歲,且不等于40歲的用戶:

db.users.find({ age: { ‘$gte’ : 33, ‘$ne’ : 40 } });

// 返回年齡等于33歲,或等于40歲的用戶:

db.users.find({ ‘$or’: [ {‘age’ : 33}, {‘age’ : 40} ] });

注意:默認情況下,MongoDB執行的是and操作,即所有指定的條件都是與的關系。只有在特別的情況下,才會使用或(or),而$or就是MongoDB的或子句。

查詢條件操作符

操作符 說明 示例
$lt,$lte,$gt,$gte <, <=, >, >= db.things.find({ a: { $gt: value } } );
$all 數組中的元素是否完全匹配 db.things.find( { a: { $all: [ 2, 3 ] } } );
$exists 可選:true,false db.things.find( { a : { $exists : true } } );
$mod 取模:a % 10 == 1 db.things.find( { a : { $mod : [ 10 , 1 ] } } );
$ne 取反:即not equals db.things.find( { x : { $ne : 3 } } );
$nin $in的反操作,即SQL的 NOT IN db.things.find({j:{$nin: [2,4,6]}});
$nor $or的反操作,即不匹配(a或b) db.things.find( { name : "bob" , $nor : [ { a : 1 } , { b : 2 } ] } )
$or Or子句,注意$or不能嵌套使用 db.things.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )
$size 匹配數組長度 db.things.find( { a : { $size: 1 } } );
$type 匹配子鍵的數據類型 db.things.find( { a : { $type : 2 } } );

正則表達式

MongoDB 的正則表達式實現了 SQL 中的通配符匹配的機制,而且比 SQL 更加強大。不過可惜的是,只有類似于 / ^ .+/ 這樣的前綴型正則表達式才能夠使用索引,其他形式都會做全集合掃描。

MongoDB 的正則表達式語法與 JavaScript 完全一致。

// 正則匹配方法之一

db.customers.find( { name : /acme.*corp/i } );

// 正則匹配方法之二

db.customers.find( { name : { $regex : 'acme.*corp', $options: 'i' } } );

// 與其他條件聯合使用

db.customers.find( { name : { $regex : /acme.*corp/i, $nin : [‘abc'] } } );

注意:MongoDB的正則表達式可以匹配其自身。如果您將正則表達式存入了MongoDB,那么查詢的時候,它可以匹配它自身!

數組查詢

MongoDB數組查詢,除了之前提到的$all和$size等,還有:$size,$slice,子項定位和$elemMatch。

1.數組查詢之$size

$size 用來匹配數組長度(即最大下標):

/ 返回comments包含5個元素的文檔

db.posts.find({}, {comments:{‘$size’: 5}});

請注意:$size操作符并不能與其他查詢操作符(子句)聯合使用,這意味著您不能使用如下代碼:

// 以下的使用方法是錯誤的

db.posts.find({}, {comments:{‘$size’: { ‘$gt’: 5 }}});

2.

$slice 操作符類似于子鍵篩選,只不過它篩選的是數組中的項。

// 僅返回數組中的前5項

db.posts.find({}, {comments:{‘$slice’: 5}});

// 僅返回數組中的最后5項

db.posts.find({}, {comments:{‘$slice’: -5}});

// 跳過數組中的前20項,返回接下來的10項

db.posts.find({}, {comments:{‘$slice’: [20, 10]}});

// 跳過數組中的最后20項,返回接下來的10項

db.posts.find({}, {comments:{‘$slice’: [-20, 10]}});

3.

細心的童鞋已經發現,數組的子項定位已經在上一個章節講過了。是的,是講過了,但我還是要再提一下,加深印象!MongoDB 允許在查詢中指定數組的下標,以實現更加精確的匹配。

本小節有且僅有一個簡單的代碼示例:

// 返回comments中第1項的by子鍵為Abe的所有文檔

db.blogposts.find( { "comments.0.by" : "Abe" } );

4.數組查詢之$ elemmarch

童鞋們還記得上一集中我們提到的數組定位修改器中除了數組下標還有一個“$ ”符號嗎?該符號在 find 中就不靈了,怎么辦呢?那就只有考慮使用 $elemMatch 操作符了,多說無益,看代碼:

// 有這樣一個包含了2個文檔的集合,仔細觀察

// 現在我們需要找到 shape = "square" 且 color = "purple" 的那項

{ "foo" : [ { "shape" : "square", "color" : "purple", "thick" :

false }, { "shape" : "circle", "color" : "red", "thick" : true } ]};

{ "foo" : [ { "shape" : "square", "color" : "red", "thick" : true },

{ "shape" : "circle", "color" : "purple", "thick" : false } ]};

// 這兩個查詢都會同時匹配兩個文檔

db.foo.find({"foo.shape": "square", "foo.color": "purple"});

db.foo.find({foo: {"shape": "square", "color": "purple"} });

// 這才是我們想要的

db.foo.find({foo: {"$elemMatch": {shape: "square", color:

"purple"}}});

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91欧美日韩一区| 57pao国产成人免费| 人妖精品videosex性欧美| 日韩精品在线观看视频| 欧美日本啪啪无遮挡网站| 中文字幕亚洲字幕| 中文字幕在线日韩| 亚洲一区二区三| 一个人看的www久久| 在线观看亚洲区| 亚洲在线www| 国产成人午夜视频网址| 亚洲第一福利网| 国产一区香蕉久久| 欧美大奶子在线| 狠狠躁天天躁日日躁欧美| 中文字幕日韩av综合精品| 久久人人爽人人爽人人片av高请| 77777亚洲午夜久久多人| 国产精品久久综合av爱欲tv| 97精品视频在线观看| 久久久精品一区| 国产一区二区三区久久精品| 国产成人一区二区三区| 精品国偷自产在线| 精品国产一区二区三区久久久狼| 久久视频在线观看免费| 久久精品国产清自在天天线| 欧美极品xxxx| 91精品久久久久久久久不口人| 欧美重口另类videos人妖| 欧美一区二区三区艳史| 久久国产天堂福利天堂| 久久久这里只有精品视频| 欧美精品久久一区二区| 中文字幕亚洲一区在线观看| www.精品av.com| 日本久久亚洲电影| 清纯唯美亚洲综合| 91牛牛免费视频| 日韩av在线资源| 亚洲高清不卡av| 亚洲xxx视频| 欧美精品一区二区三区国产精品| 91高清视频在线免费观看| 成人免费视频a| 宅男66日本亚洲欧美视频| 亚洲国产精品电影在线观看| 91福利视频网| 午夜精品久久17c| 日韩精品电影网| 中文字幕日韩欧美精品在线观看| 欧美一级视频在线观看| 日韩亚洲欧美中文在线| 91免费福利视频| 日韩av三级在线观看| 国产在线视频91| 成人黄色短视频在线观看| 九色精品免费永久在线| 日韩成人xxxx| 亚洲欧美在线第一页| 欧美美女18p| 中文字幕自拍vr一区二区三区| 日韩在线视频二区| 日本人成精品视频在线| 欧美乱大交xxxxx另类电影| 日韩欧美福利视频| 日韩av在线网| 一区三区二区视频| 欧美激情在线观看视频| 亚洲男人7777| 亚洲黄色在线观看| 欧洲成人午夜免费大片| 日韩精品在线看| 大量国产精品视频| 国产精品永久免费观看| 亚洲激情国产精品| 久久av红桃一区二区小说| 中文字幕成人在线| 久久久爽爽爽美女图片| 精品香蕉在线观看视频一| 亚洲永久在线观看| 欧美丰满少妇xxxx| 亚洲v日韩v综合v精品v| 欧美日韩亚洲激情| 色妞在线综合亚洲欧美| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品夫妻激情| 久久精品视频在线| 国产精品久久久久久久久免费| 狠狠躁天天躁日日躁欧美| 国产有码在线一区二区视频| 欧美日韩亚洲天堂| 欧美日韩裸体免费视频| 一本大道亚洲视频| 国产成人精彩在线视频九色| 久久久久在线观看| 成人写真福利网| 国产精品久久久久久久app| www.亚洲一二| 懂色av中文一区二区三区天美| 欧美一级电影久久| 久久久久久97| 91精品久久久久久| 精品国产精品自拍| 亚洲香蕉av在线一区二区三区| 欧美精品在线看| 国产精品入口夜色视频大尺度| 91深夜福利视频| 欧洲成人午夜免费大片| 久久久亚洲成人| 国产精品一区二区三| 欧美另类在线观看| 国产成人在线视频| 欧美激情亚洲自拍| 亚洲成人av资源网| 精品久久中文字幕久久av| 日本一区二区不卡| 中文字幕亚洲无线码a| 国产精品久久久一区| 亚洲精品成a人在线观看| 色综合久久中文字幕综合网小说| 久久视频在线观看免费| 色狠狠av一区二区三区香蕉蜜桃| 日韩一区二区久久久| 久久久伊人欧美| 91精品啪在线观看麻豆免费| 欧美电影在线观看高清| 欧美一级大胆视频| 亚洲人成在线观看| 国产精品第一页在线| 亚洲aⅴ男人的天堂在线观看| 亚洲自拍另类欧美丝袜| 国产精品精品一区二区三区午夜版| 亚洲欧洲自拍偷拍| 国产啪精品视频网站| 亚洲黄色av女优在线观看| 26uuu亚洲伊人春色| 成人网欧美在线视频| 精品国产网站地址| 久久亚洲精品一区二区| 久久久久北条麻妃免费看| 日韩欧美精品中文字幕| 亚洲国产精品久久久久秋霞蜜臀| 国产精品精品久久久久久| 欧美天天综合色影久久精品| 欧美在线视频在线播放完整版免费观看| 欧美日韩午夜激情| 欧美激情一级精品国产| 国产精品久久久久久一区二区| 中文字幕久久精品| 在线日韩av观看| 国产精品私拍pans大尺度在线| 91亚洲国产成人久久精品网站| 欧美视频裸体精品| 成人自拍性视频| 91啪国产在线| 国产亚洲精品久久久久动| 亚洲天堂第二页| 日韩精品视频中文在线观看| 91免费视频网站| www国产亚洲精品久久网站| 欧美午夜女人视频在线| 欧美电影免费播放|